لمحة جافاوية 60: الخيوط الخفية

السلام عليكم

كيف حالكم يا شباب
من فترة بسيطة استوقفني أخ وأنا ذاهب للفطور في الجامعة
وفاجأني بقوله علاء الأدبية
طالعت في وجهه وأنا مستغرب
ما الذي يعنيه هذا؟
فقال لي هل أنت صاحب مدونة علاء الأدبية
بأمانة استغربت الموضوع
لم أكن أتوقع أن هناك من يقرأ لي

على كل يبدو لي هذا جيداً
في الماضي كنت أكتب لأتذكر ما أكتبه
يبدو أن الوضع تغير
(أشك أن هذا الأخ متخلف عقلياً)
يا عبده احترم الناس
ألا يكفيك أن تشتم واحد فقط
(أنا فعلياً أشتمك أنت لأني أقصد أن الأخ متخلف عقلياً لكي يقرأ لك)
جيد بما أنك موجود هنا فأنت متخلف أيضاً
طااااااااااااااااخ
(أنا هنا لأني مجبر على الوجود هنا)
ومن ذا الذي أجبرك يا فالح
على العموم اتركوكم من عبده ومهاترته التي لا تنتهي
وأعتذر للأخ على وقاحة عبده معه
طاااااااااااااااااااخ
أقصد على الخطأ الغير مقصود من الأخ عبده
(ايوه اعدل يا دب)
المهم اليوم سأكلمكم عن شيء بسيط
اليوم سنكلمكم عن الخيوط الخفية daemon threads
الخيط الخفية هي عبارة عن خيط عادي
لكنه يحتوي على ميزة تميزه عن باقي الخيوط
ألا وهي لا يعمل منفرداً
ستقولون وما الميزة في هذا
هذه النوعية من الخيوط تعمل على توفير خدمة service ما للخيوط الأخرى
وفي حالة عدم وجود خيوط أخرى في البرنامج فإن هذه النوعية من الخيوط تموت تلقائياً
مثال بسيط
برنامج يقوم بعملية ضرب المصفوفات
البرنامج يتكون من خيط رئيسي يسمى Main thread
هذا الخيط مسؤول عن البرنامج والعمليات الرئيسية فيه
وخيط آخر مسؤول عن عملية ضرب المصفوفات
وبعد الانتهاء من عملية الضرب يخبر الخيط الرئيسي بأن العملية انتهت
حينها يقوم الخيط بعرض المعلومات التي توصل لها الخيط الآخر
ما الذي يحصل لو أغلقنا البرنامج
بمعنى آخر أغلقنا الخيط الرئيسي
سيبقى الخيط الآخر يعمل في حساب المصفوفة
لو فرضنا أنا نقوم بضرب مصفوفة كبيرة
فإن الوقت سيكون كبيراً
لهذا جافا تقدم مفهوم الخيوط الخفية
هذه الخيوط لا تعمل لوحدها
بمعنى آخر لو لم يتبقى في البرنامج سوى هذه النوعية من الخيوط
فإن هذه الخيوط تموت من تلقاء نفسها
وهذه ميزة كبيرة جداً
على العموم جربوا البرنامج التالي وأخبروني رأيكم

package daemon_thread;

public class MainThread {
	public static void main(String[] args) {
		DaemonThread daemonThread=new DaemonThread();
		Thread thread=new Thread(daemonThread);
		//thread.setDaemon(true);
		thread.start();
		for (int i = 0; i < 10; i++) {
			System.out.println("main thread");
		}
	}

}
package daemon_thread;

public class DaemonThread implements Runnable{

	public void run() {
		while (true) {
			System.out.println("daemon thread");
		}
		
	}

}

ملاحظة:بالمناسبة المؤقتات تستخدم مفهوم الخيط الخفي
صحيح نسيت أن أخبركم
أن المثال السابق فقط يحتاج إلى تفعيل السطر التالي

//thread.setDaemon(true);

لتروا الفرق ما بين الخيط العادي والخيط الحفي
أتمنى أن تكونوا حصلتوا على بعض الفائدة

تحياتي

أحب أن أنسب الفضل إلى أصحابه
هذه اللمحة مستقاة من رد للأخ عيسى في منتدى الفريق العربي للبرمجة
لا أذكر متى بالضبط لكني قرأتها قديماً جداً
وأتمنى إن كان عيسى يرى هذه المقالة أن يطمني على حاله

Tags: , , , , , , , ,

4 Responses to “لمحة جافاوية 60: الخيوط الخفية”

  1. zainab قال:

    ممتاز يا أستاذ علاء

  2. admin قال:

    العفو أخت زينب
    أتمنى لك التوفيق

  3. Zainab90 قال:

    سأحاول أن أجد الوقت الكافي لأقرأ كل ما في المدونة..فالأسلوب الرائع يشجعني على القراءة أكثر..لكم مني خالص الدعوات بالتوفيق والتيسير في الحياة..نعم فقد تعلمت منكم الكثير

  4. admin قال:

    أتمنى أن تجدي ما ينفعك
    ولو توقفتي عند نقطة وأردتي المساعدة أخبريني

    تحياتي

Leave a Reply