
مقدمة
لقراءة هذه السلسلة يجب أن تكون متقناً لأساسيات البرمجة الغرضية بلغة الجافا.
قبل الدخول في مفهوم تعدد الخيوط (أو المسالك) سأقوم بشرح بعض المفاهيم الهامة.
العملية Process
يمكن تعريف العملية أنها برنامج قيد التنفيذ، ومعنى كلمة قيد التنفيذ أنه يوجد حيز من الذاكرة RAM يحوي التعليمات الخاصة بهذا البرنامج وان المعالج قد بدأ فعلاً بقراءة هذه التعليمات من الذاكرة وتنفيذها.

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

الخيط (المسلك) Thread
بشكل مشابه لتقسيم المعالج والذاكرة على العمليات، يتم تقسيم حصة العملية الواحدة من الذاكرة والمعالج على عدد من الخيوط ضمن العملية، حيث تملك كل عملية خيط واحد على الأقل.
من أجل برنامج معين يمكن تقسيم هذا البرنامج إلى عدة أقسام يتم تنفيذها في آن واحد (تعمل في نفس الوقت) وهذا ما يطلق عليه مفهوم تعدد الخيوط Multi-Threading.
السبب وراء تعدد الخيوط
في كثير من البرامج قد تكون هناك حاجة إلى تنفيذ عدة مهام في آن واحد من أجل توفير الوقت، على سبيل المثال لنفرض أننا نريد كتابة برنامج يبحث في القرص الصلب عن ملف معين، وكما هو معلوم فإذن القرص الصلب قد يكون مقسماً إلى عدة أقسام (C، D، E، F…)، لإنجاز عملية البحث بالطريقة التقليدية نجعل برنامجنا يقوم بالبحث في هذه الأقسام واحداً تلو الآخر، فمثلاً نبحث أولاً في القسم D وعند الانتهاء نبحث في القرص E وهكذا….
ومع ظهور مفهوم تعدد الخيوط أصبح بالإمكان تقسيم البرنامج إلى 4 مسالك مثلاً يقوم كل خيط بالبحث في قسم معين من أقسام القرص الصلب وهذه الخيوط تعمل في آن واحد ولم نعد مضطرين لانتظار عملية البحث في القرص C حتى نبدأ البحث في القرص D مثلاً.
الخيوط في لغة الجافا
كما قلنا إن لكل عملية خيط واحد على الأقل، في لغة الجافا هذا الخيط يسمى الخيط الرئيسي ومن خلاله يمكن إنشاء مسالك فرعية أخرى.

طبعاً عملية إنشاء الخيوط الفرعية ليست إجبارية ففي ببعض البرامج يمكن للخيط الرئيسي إنجاز البرنامج كاملاً دون أي مشاكل.
أعتذر عن هذه المقدمة النظرية التي لابدّ منها، إذا كنت تملك مزيداً من الوقت أنصحك بالانتقال مباشرة إلى القسم التالي الذي أتحدث فيه عن كيفية التطبيق العملي لتعدد الخيوط.