التهيئة الكسولة بدون أقفال
استبدل القفل المزدوج بـ StableValue للحصول على مفاردات كسولة.
مقارنة الكود
✕ Java 8
class Config {
private static volatile Config inst;
static Config get() {
if (inst == null) {
synchronized (Config.class) {
if (inst == null)
inst = load();
}
}
return inst;
}
}
✓ Java 25 (Preview)
class Config {
private static final
StableValue<Config> INST =
StableValue.of(Config::load);
static Config get() {
return INST.get();
}
}
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
لا كليشيه
لا volatile ولا synchronized ولا فحص مزدوج للقيمة الفارغة.
قراءات أسرع
يمكن لـ JVM طي القيمة بعد التهيئة.
صحيح بصورة مُبرهنة
لا أخطاء ترتيب خفية — JVM يتولى الأمر.
الأسلوب القديم
synchronized + volatile
الأسلوب الحديث
StableValue
منذ JDK
25
الصعوبة
متقدم
دعم JDK
التهيئة الكسولة بدون أقفال
معاينة
معاينة في JDK 25 (JEP 502، StableValue). يتطلب --enable-preview.
كيف يعمل
يُغلّف StableValue نمط التهيئة الكسولة مع أمان صحيح للخيوط. يمكن لـ JVM تحسين مسار القراءة بعد التهيئة مما قد يجعله أسرع من قراءات volatile.
توثيق ذو صلة