Semafory jsou bezpečné pro vlákna, jak je vysvětleno v javadoc: Efekty konzistence paměti: Akce ve vláknu před voláním metody „release“, jako jsou akce před vydáním po úspěšná metoda „získání“, jako je získání v jiném vláknu. Většina operací s objekty v jazyce Java.
Zabraňují semafory závodu?
Ne, operace uzamykání probíhají atomicky. Celé zamčené nebude provedeno atomicky. A pamatujte, vlákna sdílejí společný adresní prostor a všechna jsou vázána na proces.
Používáte bezpečné vlákno?
A Objekt MessageService je efektivně neměnný, protože jeho stav se po sestavení nemůže změnit. Je tedy bezpečný pro vlákna. Navíc, pokud by služba MessageService byla skutečně měnitelná, ale více vláken k ní má přístup pouze pro čtení, je to také bezpečné pro vlákna.
Je vlákno bezpečné a synchronizované?
Thread safe znamená: metoda se stává bezpečnou, aby k ní mohlo bez problémů přistupovat více vláken současně. synchronizované klíčové slovo je jedním ze způsobů, jak dosáhnout „bezpečného vlákna“. Ale pamatujte: Ve skutečnosti, když se několik vláken pokouší o přístup k synchronizované metodě, postupují podle pořadí, takže přístup je bezpečný.
Jsou semafory spravedlivé?
Obecně platí, že semafory používané k řízení přístupu ke zdrojům by měly být inicializovány jako spravedlivé, aby bylo zajištěno, že žádné vlákno nebude vyhladověno z přístupu ke zdroji. Při použitísemafory pro jiné druhy řízení synchronizace, výhody propustnosti nespravedlivého objednávání často převažují nad úvahami o spravedlnosti.