volatile
اینجا درباره «volatile در جاوا» می گوییم. «نخ (Thread)» یعنی کار همزمان. «volatile» برای متغیر (Variable) است و می گوید همه نخ ها همیشه همان مقدار تازه را ببینند؛ مثل تابلو اعلانات مدرسه که همه نسخه یکسان می بینند.
volatile در جاوا یعنی چی؟
طبق منبع، کلیدواژه volatile یک «تغییر دهنده (Modifier)» است. این کلیدواژه مطمئن می کند مقدار یک ویژگی همیشه از دید همه نخ ها یکسان خوانده شود و از حافظه اصلی به روزرسانی شود.
معمولاً مقدار ویژگی ممکن است در کش محلی نخ بماند. سپس دیگر نخ ها مقدار متفاوت می بینند. اما با volatile مقدار در حافظه اصلی به روز می ماند و همه همان را می خوانند.
مثال ساده از volatile
public class Main {
public static volatile int x = 5;
public static void main(String[] args) {
System.out.println(x);
}
}
تمرین مرحله ای
- کد مثال را اجرا کن و خروجی را ببین.
- مقدار x را عوض کن و دوباره اجرا کن.
- volatile را بردار و تفاوت را بررسی کن.
نکته: وقتی چند نخ مقدار را می خوانند، volatile کمک می کند همه مقدار تازه ببینند.
هشدار: فقط از منبع استفاده کن و نتیجه را در ادیتور تست کن.
برای خواندن بیشتر درباره «تغییر دهنده ها»، صفحه منبع را ببین. همچنین مقالات داخلی ما درباره هم زمانی مفیدند: volatile در جاوا، synchronized در جاوا و transient در جاوا.
جمع بندی سریع
- volatile یعنی مقدار همیشه تازه است.
- برای خواندن همزمان نخ ها مفید است.
- کش محلی نخ را دور می زند.
- مثال را در ادیتور امتحان کن.