Semafory sú bezpečné pre vlákna, ako je vysvetlené v javadoc: Účinky konzistencie pamäte: Akcie vo vlákne pred volaním metódy „uvoľnenia“, ako napríklad akcie pred uvoľnením po úspešná metóda „získania“, ako napríklad získanie v inom vlákne. Väčšina operácií s objektmi v jazyku Java.
Zabraňujú semafory pretekom?
Nie, uzamykacie operácie prebiehajú atómovo. Celé zamknuté sa nevykonajú atomicky. A pamätajte, že vlákna zdieľajú spoločný adresný priestor a všetky sú viazané na proces.
Je používanie vlákien bezpečné?
A Objekt MessageService je efektívne nemenný, pretože jeho stav sa po zostavení nemôže zmeniť. Preto je bezpečný pre vlákna. Navyše, ak bola služba MessageService skutočne meniteľná, ale viaceré vlákna k nej majú prístup iba na čítanie, je tiež bezpečná pre vlákna.
Je vlákno bezpečné a synchronizované?
Thread safe znamená: metóda sa stáva bezpečnou, aby k nej mohli bez problémov pristupovať viaceré vlákna súčasne. synchronizované kľúčové slovo je jedným zo spôsobov, ako dosiahnuť „bezpečnosť vlákien“. Ale pamätajte: V skutočnosti, keď sa viaceré vlákna pokúšajú o prístup k synchronizovanej metóde, postupujú podľa poradia, takže prístup je bezpečný.
Sú semafory spravodlivé?
Vo všeobecnosti platí, že semafory používané na riadenie prístupu k zdrojom by mali byť inicializované ako spravodlivé, aby sa zabezpečilo, že žiadne vlákno nebude vyhladované z prístupu k zdroju. Pri použitísemafory pre iné druhy kontroly synchronizácie, priepustnosť výhod nespravodlivého objednávania často prevažuje nad úvahami o spravodlivosti.