A szemaforok biztonságosak a szálak a javadoc-ban leírtak szerint: Memóriakonzisztencia hatások: A szálban végrehajtott műveletek a "felszabadítási" metódus meghívása előtt, például a felszabadítás megtörténik, mielőtt a műveletek egy sikeres "elsajátítási" módszer, mint például a másik szálban történő beszerzés. A legtöbb művelet a java objektumain.
A szemaforok megakadályozzák a versenyt?
Nem, a reteszelési műveletek atomszerűen történnek. A teljes zárolt nem hajtódik végre atomosan. És ne feledje, a szálak közös címteret használnak, és mindegyik folyamathoz van kötve.
Biztonságos a szál használata?
A MessageService objektum gyakorlatilag megváltoztathatatlan, mivel az állapota nem változhat a felépítés után. Ezért cérnabiztos. Sőt, ha a MessageService valóban változtatható lenne, de több szál csak olvasási hozzáféréssel rendelkezik, akkor az is szálbiztos.
Biztonságos és szinkronizált a szál?
Szálbiztos eszköz: a metódus biztonságossá válik, hogy egyszerre több szál is hozzáférjen hozzá. A szinkronizált kulcsszó az egyik módja a „szálbiztonság” elérésének. De ne feledje: Valójában bár több szál próbál hozzáférni a szinkronizált metódushoz, a sorrendet követik, így biztonságossá válik a hozzáférés.
Tisztességesek a szemaforok?
Általában az erőforrás-hozzáférés vezérlésére használt szemaforokat tisztességesnek kell inicializálni, hogy egyetlen szál se maradjon ki az erőforrás elérésétől. Használat soránmásfajta szinkronizálási vezérlés szemaforjai, a nem tisztességes rendezés átviteli előnyei gyakran felülmúlják a méltányossági szempontokat.