Semàfors són segurs per a fils, tal com s'explica al javadoc: efectes de consistència de memòria: accions en un fil abans de cridar un mètode de "alliberament", com ara l'alliberament, accions després d'un mètode "adquirir" amb èxit, com ara adquirir en un altre fil. La majoria de les operacions sobre els objectes del Java.
Els semàfors eviten la raça?
No, les operacions de bloqueig es produeixen atòmicament. Tots els blocs no s'executaran atòmicament. I recordeu que els fils comparteixen un espai d'adreces comú i estan lligats a un procés.
És segur utilitzar fil?
A MessageService object és efectivament immutable, ja que el seu estat no pot canviar després de la seva construcció. Per tant, és segur per a fils. A més, si MessageService fos realment mutable, però diversos fils només hi tenen accés de només lectura, també és segur per a fils.
El fil segur i sincronitzat?
Thread safe significa: el mètode esdevé segur per ser accedit per diversos fils sense cap problema al mateix temps. paraula clau sincronitzada és una de les maneres d'aconseguir la "seguretat de fils". Però recordeu: en realitat, mentre que diversos fils intenten accedir al mètode sincronitzat, segueixen l'ordre, de manera que l'accés és segur.
Els semàfors són justos?
En general, els semàfors que s'utilitzen per controlar l'accés als recursos s'han d'inicialitzar com a just, per assegurar-se que cap fil no pot accedir a un recurs. Quan s'utilitzasemàfors per a altres tipus de control de sincronització, els avantatges de rendiment de l'ordre no just sovint superen les consideracions d'equitat.