لمحة جافاوية 49 حاوية الخيوط Thread Pool

السلام عليكم

يبدو أن الكثير منكم هجرني
ولم يعد يزورني
الكثير من القليل الذين كانوا يزورونني
أنا أعرف أني مقصر معكم
لكن هذا أمر خارج عن قدرتي
ضغوط العمل تجعلك قصير الفتيل
وعندما تكون قصير الفتيل فلن تكون رائق البال
والكتابة عمل يقوم به رائقوا البال
سبحان الله هكذا هو الإنسان إن كان خالي أشغال تمنى العمل وإن كان عاملاً تمنى أن يكون خالي أشغال
على كل حال فأنا الآن رائق البال
وسأكلمك اليوم عن حاوية الخيوط Thread pool
حاوية الخيوط هي المكان الذي يوجد فيه مجموعة من الخيوط Threads
(تعريف غبي جداً)
ممممممممممم
ما الذي أفعله يا عبده إن كانت فعلاً كذلك
(لا تكتب تعريف من الأصل)
لا أستطيع يا عبده لأني لو لم أفعل لسألتموني عنها لأن الموضوع جديد عليكم
على أية حال هناك بقية للتعريف يا ذكي
حاوية الخيوط هي المكان الذي يوجد فيه مجموعة من الخيوط Threads
تنتظر الأوامر لتنفيذ المهام المختلفة
عندما تأتي مهمة إلى حاوية الخيوط
تقوم الحاوية بتمريرها إلى أحد مجموعة الخيوط المتفرغة
-متفرغة أي لا تعمل على أية مهام-
والتي بدورها توكل المهمة إلى أحد الخيوط
وتقوم بنقل الخيط إلى مجموعة الخيوط العاملة
بعد أن ينتهي الخيط من تنفيذ المهمة
يخبر الحاوية بأنه قد أنهى مهمته
فتقوم بإعادته إلى مجموعة الخيوط المتفرغة
البعض يتساءل ولماذا كل هذه الفلسفة
لماذا لا نقوم بعمل خيط جديد لكل مهمة
خصوصاً وأن الخيوط غير مكلفة في الإنشاء كالعمليات processes
هي فعلاً كلفت إنشائها قليلة لكن هناك كلفة وهناك برامج تحتاج إلى إنشاء عدد كبير من الخيوط مثل Servlet
بما أنا قد فهمنا آلية عمل حاوية الخيوط
نريد أن نعرف كيف نبرمجها في جافا
جافا تحتوي على عدة أنواع من الحوايا
على أية حال لن أشرحها حالياً ربما في المستقبل
لكن لا تقولوا أني وعدتكم
هذا مثال على الحاوية الأكثر استخداماً ألا وهي CachedThreadPool

package threadPooling;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
	public static void main(String[] args) {
		ExecutorService pool=Executors.newCachedThreadPool();//1-reserved resources
		//2-Execute tasks
		//3-task is a Runnable object
		pool.execute(new Runnable(){
	
			public void run() {
				//4-some code
			}
			
		});
		pool.shutdown();//5-free resources
		pool.shutdownNow();//6-try to terminate all threads now
	}
}

لقد وضعت أرقاماً بجانب الجمل المهمة في الشيفرة وشرحها كالتالي
1- تقوم بحجز حاوية خيوط والتي بدورها تحتوي على عدد من الخيوط التي تستهلك ذاكرة ما
2- الحاوية تقوم بتنفيذ المهام
3- المهام هي عبارة عن كائنات من النوع قابل للتشغيل Runnable
4- تضع الشيفرة التي تريد تنفيذها في المهمة
5- لا يقبل تنفيذ أي مهام جديدة وينتظر حتى تنتهي المهام القديمة بعدها يغلق الحاوية يوكل جامع النفايات بإزالة الخيوط
6- يحاول إيقاف جميع الخيوط العاملة وتحرير جميع المصادر المستخدمة من خلالها مباشرة لكنه لا يضمن ذلك
إلى هنا أصل إلى نهاية درس اليوم
(سأقوم أنا بشرح اللمحة القادمة)
هذا حقك يا أخ عبده مادام أنك توجه لي مسدس
(أية مسدس يا كذاب تريد أن تلفق لي جناية)
إذاً ماذا تضع خلف ظهري
(يدي يا غبي)
ممممممممممم
على أية حال سواءاً بمسدس أو من غير مسدس لأن أستطيع إيقاف الأخ عبده
لهذا اللمحة القادمة سيكون هو صاحبها

أتمنى لكم التوفيق
تحياتي

Tags: , , , , , ,

6 Responses to “لمحة جافاوية 49 حاوية الخيوط Thread Pool”

  1. أميرة قال:

    كنت هنا ..

    جزيت خيرا اخي .

  2. admin قال:

    أسعدني رؤيتك أخت أميرة
    أتمنى أن أراك دائماً هنا

    تحياتي

  3. Salam قال:

    غريبة .. انا بعرف كل مهندسي الحاسوب دائما رائقي البال .. :P
    Thread Pool …. اها انا كإني سمعت بهيك شي أيام نظم التشغيل ..
    بس هلأ عدد الThread بالحاوية .. ع أي أساس بختارو ؟
    و شو الفايدة لو كان مش محدد عددهم .. ؟

    يعطيك العافية :)

  4. admin قال:

    بالنسبة لموضوع مهندسي الحاسوب رائقي البال
    دليني على واحد لأتعلم منه

    ولو أن هذا من أسرار المهنة لكنه لن يغلى عليك سلام
    عدد الخيوط يعتمد على تعقيد البرنامج الخاص بك
    لأكون صادقاً معك هذا شيء خارج عن علمي
    لكني أظن أنه يعتمد على عملية مراقبة النظام بشكل مستمر
    عن نفسي أفضل أن أزيل هذا الهم عن عاتقي وأعلقه في عاتق الأخ ThreadPool

    تحياتي

  5. leperuroenrow قال:

    I found this site using google.com. And i want to thank you for your work. You have done really excellent site. Great work, great site! Cheers!

    Sorry for offtopic

  6. admin قال:

    thank you for your comment
    I hope my website helping you :)

Leave a Reply