Avatar ·

لماذا تحتاج الكلمة المفتاحية volatile في Java؟ اشرح مع أمثلة

مرحباً بالجميع! أنا مطور Java مبتدئ، وأدرس مؤخراً تعدد الخيوط بنشاط. صادفت الكلمة المفتاحية `volatile`، لكنني لم أفهم تماماً لماذا هي مطلوبة ومتى يجب استخدامها. لقد كتبت كوداً صغيراً حيث يقوم خيط واحد بتغيير العلم `running`، بينما يتحقق خيط آخر منه في حلقة. بدون `volatile`، يعمل البرنامج أحياناً بشكل غير صحيح — الخيط الثاني لا يرى التغيير ويستمر في العمل. إليك كودي: ```java public class TestVolatile { private static boolean running = true; public static void main(String[] args) throws InterruptedException { Thread worker = new Thread(() -> { while (running) { // نفعل شيئاً } System.out.println("تم إيقاف Worker"); }); worker.start(); Thread.sleep(1000); running = false; // نغير العلم في الخيط الرئيسي System.out.println("تم تعيين العلم إلى false"); } } ``` المشكلة هي أن البرنامج أحياناً لا ينتهي — worker