الدرس 46: مقدمة في تعدد الخيوط (Multithreading)
يسمح تعدد الخيوط للبرنامج بتشغيل أجزاء متعددة من كوده في وقت واحد. يسمى كل مسار تنفيذ متزامن بـ الخيط (Thread).
1. العملية مقابل الخيط
- العملية (Process): بيئة تنفيذ لها مجموعتها الكاملة من الموارد (ذاكرة، ملفات). العمليات المتعددة تعمل بشكل مستقل.
- الخيط (Thread): عملية فرعية خفيفة داخل العملية. تشترك الخيوط في موارد العملية (مثل الذاكرة)، مما يجعل التواصل بينها سريعاً ولكنه يقدم تعقيداً في ضمان أمان البيانات.
2. إنشاء خيط (الطريقة 1: توسيع فئة Thread)
أبسط طريقة هي إنشاء فئة فرعية من Thread وتجاوز دالة run().
java public class MyThread extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName() + " is running."); } }
// الاستخدام: MyThread t1 = new MyThread(); t1.start(); // يستدعي run() ويبدأ الخيط بشكل متزامن
3. إنشاء خيط (الطريقة 2: تنفيذ واجهة Runnable)
هذه هي الطريقة المفضلة لأنها تسمح لفئتك بوراثة فئة أخرى مع الاستمرار في تعريف مهمة الخيط.
java public class MyRunnable implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName() + " is running."); } }
// الاستخدام: Thread t2 = new Thread(new MyRunnable()); t2.start();
4. دورة حياة الخيط
تنتقل الخيوط عبر عدة حالات: جديد (New)، قابل للتشغيل (Runnable)، يعمل (Running)، متوقف/ينتظر (Blocked/Waiting)، ومنتهٍ (Terminated).