Avatar ·

ماذا تعني الكلمة المفتاحية synchronized في Java؟ اشرح بكلمات بسيطة مع أمثلة

مرحبًا أيها الزملاء! أنا مبتدئ في Java ولا أستطيع فهم ما تفعله الكلمة المفتاحية `synchronized`. قرأت الوثائق لكنها تبدو معقدة جدًا. لدي كلاس بسيط `Counter` يزيد العداد في عدة خيوط (threads). أتوقع أن كل خيط سيضيف 1000 إلى العداد الإجمالي، لكن النتيجة دائمًا مختلفة: تارة 1987، وتارة 2003، مع أنه يجب أن تكون بالضبط 2000 (خيطان كل منهما 1000). إليك الكود الخاص بي: ```java public class Counter { private int count = 0; public void increment() { count++; } public int getCount() { return count; } } public class Main { public static void main(String[] args) throws InterruptedException { Counter counter = new Counter(); Thread t1 = new Thread(() -> { for (int i = 0; i < 1000; i++) { counter.increment(); } }); Thread t2 = new Thread(() -> { for (int i = 0; i < 1000; i++) { counte