летливи променливи

летливи променливи

Летливи дума се отнася само за променлив и има следните ефекти върху многонишков програмиране:

  • 1. променливата винаги чете от основната памет, и никога кеширани в паметта поток и следователно винаги на разположение на всяка нишка;
  • 2. Когато искания за четене и писане на множество потоци, производителността на системата е гарантирана първите заявки за запис;
  • 3. атомност гарантирани операции четене / запис, въпреки че това е вярно само за променливи от тип дълъг и двойни, за други типове тези действия и така са атомните. За всички други операции, като ++, синхронизацията се извършва външно или използва атомни видове като AtomicInteger java.util.concurrent.atomic на опаковката;
  • 4. резултатите в предходните параграфи, потоците не са блокирани в очакване на освобождаването на монитора;

променлив обект може да бъде нула.

По-долу е пример за Сингълтън с късна инициализация. Да предположим, че една нишка създава един случай. А ситуация може да възникне, когато инстанция вече е посочена създадения обект, но потокът не може да получи в синхрон блок, тъй като системата е предала контрола на други потоци. В този случай, без летливи за всички други потоци например все още е празно. И ако някои потоци също се нуждаят от нея, те ще бъдат бездейства.

Друг пример е, когато една нишка трябва да бъде завършена от наблюдаваната стойност на променливата в другия поток. Вземете играта с два потока, един поток GUI, друга игра цикъл. Да предположим, че при натискане на определен променлив btExit ustnavlivaetsya да е вярно. Но без летливи игри нишка да пропуснете тази промяна.

В следващия пример без нестабилна и без System.out.print ( "") в данните за игрите поток може да се прилага до безкрайност (проверени на Mac). С летливи или System.out.print ( "") при прилагането на игрите поток работи по предназначение: entera прекратен след двата потока.