0Pricing
Java Academy · درس

المتغيرات الذرّية والمجموعات المتزامنة

تعلّم استخدام المتغيرات الذرّية والمجموعات المتزامنة لضمان أمان الخيوط.

المتغيرات الذرّية والمجموعات المتزامنة درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 3. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 3 دروس في المجموع.

مقدمة

تسهّل المتغيرات الذرية والمجموعات المتزامنة كتابة برامج آمنة مع الخيوط.

AtomicInteger

يوفّر AtomicInteger عمليات ذرية للزيادة والنقصان والمقارنة والتعيين.

الشفرة: AtomicInteger

يضمن AtomicInteger أمان التحديثات عند استخدام الخيوط من دون أقفال صريحة.

import java.util.concurrent.atomic.*;public class Main {
  public static void main(String[] args) throws Exception {
    AtomicInteger count = new AtomicInteger(0);
    Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
    Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println("Count = " + count.get());
  }
}

المجموعات المتزامنة

تتعامل المجموعات المتزامنة، مثل ConcurrentHashMap أو CopyOnWriteArrayList، مع الوصول المتزامن بأمان.

الشفرة: ConcurrentHashMap

يتيح ConcurrentHashMap عمليات كتابة وقراءة متزامنة وآمنة.

import java.util.concurrent.*;public class Main {
  public static void main(String[] args) throws Exception {
    ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
    Thread t1 = new Thread(() -> { map.put("A", 1); });
    Thread t2 = new Thread(() -> { map.put("B", 2); });
    t1.start(); t2.start();
    t1.join(); t2.join();
    System.out.println(map);
  }
}

الشفرة: CopyOnWriteArrayList

يتجنب CopyOnWriteArrayList الاستثناء ConcurrentModificationException أثناء التكرار.

import java.util.concurrent.*;public class Main {
  public static void main(String[] args) {
    CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
    list.add("Hello");
    list.add("World");
    for(String s : list) {
      list.add("Extra"); // safe even during iteration
      System.out.println(s);
    }
  }
}

فحص الذرية/التزامن

فحص سريع: لماذا نستخدم AtomicInteger بدلًا من int عادي مع عدة خيوط؟

مراجعة

مراجعة: استخدموا الأصناف الذرية للعدّادات الآمنة مع الخيوط، والمجموعات المتزامنة لهياكل البيانات المشتركة الآمنة.

الأسئلة الشائعة

هل درس «المتغيرات الذرّية والمجموعات المتزامنة» مجاني؟

نعم — نص درس «المتغيرات الذرّية والمجموعات المتزامنة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 3 دروس في المجموع.

ماذا ستتعلم في «المتغيرات الذرّية والمجموعات المتزامنة»؟

تعلّم استخدام المتغيرات الذرّية والمجموعات المتزامنة لضمان أمان الخيوط. تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟

لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 3.

كم من الوقت يستغرق درس «المتغيرات الذرّية والمجموعات المتزامنة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟

نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المزامنة والأقفال
  2. المتغيرات الذرّية والمجموعات المتزامنة
  3. أخطاء التزامن الشائعة
← العودة إلى Java Academy