Летливите ключова дума в Java - стек преливане на Руски

Летливите модификатора налага някои допълнителни условия на променливата на четене / запис. Важно е да се разбере две неща за летливи променливи:

  1. четене / запис на летливи променлива са атомни операции.
  2. Операция резултат рекордни стойности в летлив променлив дебит, то е видимо за всички други теми, които се използват, за да прочетете тази променливи стойности от тях.

Изглежда, че лицето, което иска въпросът да е ваша, достатъчно, за да се знаят тези две точки.

Не, не е константа. летлив тъй като тя казва на компилатора, че стойността на променливата може да се промени по всяко време от друга нишка, а дори и от други програми, а той дори не забеляза. Поради това, компилаторът спира извършване на различни оптимизации, свързани с тази променлива (например, поставяне на копие на регистрите) и винаги чете стойността му от паметта. - ctor 10 Януари '11 в 19:37

Определяне на променлива ключова дума летлив означава, че стойността на тази променлива може да бъде променена от други теми. За да се разбере това, което го прави променлива. полезно да се разбере как потоците обработвани в обичайните променливи.

С цел да се подобри ефективността на спецификацията Java език дава възможност за запазване на локалното копие на променливата JRE за всеки поток, който се отнася до него. Такива "местен" копие на променливи приличат на паричния поток и ще помогне да се избегне прибягването до основната памет всеки път, когато искате да получите стойността на променливата. При провеждане на две теми, една от тях чете 5 като променлива А, а вторият - как да 10. Ако променлива, се променя от 5 до 10, на първия поток не признава промяната и ще се съхранява грешна стойност А. Въпреки това, ако променлива се маркира като летлив , След това всеки път, когато потокът не се чете стойностите на А, той ще се обърне към главния копирате и прочетете сегашната си стойност. Локален кеш поток има смисъл, ако променливите в своите приложения няма да се променят отвън.

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

Отговорено 16 '15 август в 18:14

за летливи референции на обекти не могат да пишат. Прав ли съм?

Така например, когато сме в многонишковите приложения посредством Сингълтън модел, в който се използва за синхронизиране и искате да синхронизирате извършва само веднъж, за да се инициализира обекта, а не всеки път, когато ние наричаме getInstance (), а след това използвайте летливи модификатора да позоваването на обекта:

Отговорено 05 Април '16 в 11:50

летливо - буквално означава летене. капризен. непостоянен

в контекста на програмирането, това означава, че стойността може внезапно да се промени, така че не трябва да разчитат на стойността на тази променлива, например, ако кодът е писано:

Това не означава, че цикълът ще бъде завършен в точно 10 стъпала.

Може да се окаже, че в хода на цикъла летлив стойността на променливата ще се промени по неочакван начин (и може би няма да се промени).

отговорът е даден на 13 януари в 06:02 часа