Безопасни ли са семафорите с нишки?

Безопасни ли са семафорите с нишки?
Безопасни ли са семафорите с нишки?
Anonim

Семафорите са безопасни за нишки, както е обяснено в javadoc: Ефекти на консистентност на паметта: Действия в нишка преди извикване на метод "освобождаване", като например освобождаване, се случва преди действия след успешен метод за "придобиване", като например придобиване в друга нишка. Повечето операции върху обектите в java.

Пречат ли семафорите на състезанието?

Не, операциите по заключване се извършват атомарно. Цялото заключено няма да бъде изпълнено атомарно. И запомнете, нишките споделят общо адресно пространство и всички са обвързани с процес.

Използването на конец безопасно ли е?

A Обектът MessageService е ефективно неизменяем, тъй като състоянието му не може да се промени след изграждането му. Следователно, той е безопасен за нишки. Освен това, ако MessageService действително беше променлив, но множество нишки имат достъп само за четене до него, то също е безопасно за нишки.

Безопасна ли е нишката и синхронизирана ли е?

Безопасен за нишки означава: методът става безопасен за достъп от множество нишки без никакъв проблем едновременно. синхронизирана ключова дума е един от начините за постигане на „безопасен за нишки“. Но запомнете: Всъщност, докато множество нишки се опитват да осъществят достъп до синхронизиран метод, те следват реда, така че става безопасен за достъп.

Справедливи ли са семафорите?

Общо взето, семафорите, използвани за контрол на достъпа до ресурс, трябва да бъдат инициализирани като справедливи, за да се гарантира, че нито една нишка не е изгубена от достъп до ресурс. При използванесемафори за други видове контрол на синхронизацията, предимствата на пропускателната способност на несправедливото подреждане често превъзхождат съображенията за справедливост.

Препоръчано: