ما هو التزامن Concurrency و تعدد المسارات Multithreading في جافا ؟!

ما هو التزامن Concurrency و تعدد المسارات Multithreading في جافا ؟!

أولاً، ما هو التزامن Concurrency كفكرة؟
الوصول المتزامن هو تنفيذ اكثر من شيء في نفس الوقت.  هذا هو التزامن.

لو كان التزامنُ لديكَ سهلاً لاستطعت أن تحتفظ بتسلسل أفكارك عندما قاطعك زميلُكَ ومُديركَ أثناء عملك. ولكنّهُ شيءٌ لا يستطيعُ الإنسان فعلهُ ببساطة.

وعلى عكس ذلك، نسعد جداً بوجوده في كثيرٍ من الأحيان في حياتنا!

عندما تذهب إلى مكتبٍ لخدمات الجهمور (مثل مكتب البريد) تجد عادةً أكثرَ من موظف يؤدون نفس المهمة لخدمة أكثر من شخص في وقتٍ واحد.

تستطيعُ القول في هذه الحالة أن هذا المكتب يؤدي هذه الخدمة بشكلٍ متزامن.

وهل يوجد التزامن Concurrency في الحاسب؟

هنا سأستحدث عن تزامنين مختلفين .. انتبه!

حتى بداية الألفية الحالية كان للحواسيب معالج واحد، هل تعلم ماذا يعني ذلك؟

المعالج الواحد يعني أن الحاسب يستطيع أن يؤدي مهمة واحدة في الوقتِ الواحد!

فلنقل مثلاً أنك تكتب على برنامج الوورد وتشغّل ملفاً صوتياً في الخلفية، هاتين العمليتين تعملان في نفس الوقت ما يعني أنهما يُؤدَّيَان بشكل متزامن.

وفي الحواسيب ما قبل العام 2000 كان من البساطة تشغيل أكثر من برنامج في نفس الوقت!!

كيف كان يحدث ذلك والمعالج واحد؟!!

نعم، المعالج يؤدي مهمةً واحدة في الوقت الواحد، ولكن،،، نسبةً للسرعة العالية التي يمتلكها المعالج يقوم بالتبديل بين تنفيذ المهام بسرعةً عالية بحيثُ يبدو لكَ أن المهام تعمل بشكلٍ متزامن.

ولكن في الحقيقة، في الحواسيب ذات المعالج الواحد لا يتم تشغيل البرامج (تنفيذ العمليات) بشكل متوازٍ (متزامن Paralleled)، كما قلنا يتم التبديل بين العمليات بسرعةٍ عالية وهو ما ينتُج عنه في نظر المستخدم تزامن Concurrency في التنفيذ.

أما في الحواسيب التي تحتوي على أكثر من معالج فإنها تستطيع تنفيذ المهام أو تشغيل البرامج بشكل متوازٍ (متزامن paralleled) حقيقي.

هل تحتاج إلى التزامن Concurrency فعلاً أم أنه إضافة مرهقة؟!

المزامنة Concurrency تجعل البرامج أجمل للمستخدمين! وكيف ذلك؟

مثلما كنت أكثر سعادة عندما زرتَ مكتب البريد ووجدت عدة أشخاص يؤدون نفس المهمة في نفس الوقت المزامنة Concurrency ترفع معدل وسرعة استجابة النظم.

تخيل أن نظام التشغيل (ويندوز أو ماكنتوش مثلاً) لا يستطيع تشغيل أكثر من برنامج في نفس الوقت!

ملحوظة: نظام التشغيل يعتبر برنامجاً كذلك.

لا ملفات صوتية أثناء العمل، لا ملفين في نفس الوقت للمقارنة، لا يمكن الاحتفاظ ببرنامج مفتوح أثناء تشغيل آخر.

حتى الآلة الحاسبة لن تعمل أثناء كتابتك لشفرة مصدرية! – أما على مستوى البرامج، فإن المزامنة تعدُ عنصراً أساسياً في الكثير جداً من البرامج! وأُعطيك المثال الشهير..

بدون مزامنة لا مشاهدة لفيديوهات يوتيوب أثناء التحميل.

إذاً ما الفرق بين المزامنة Concurrency وتعدد المسارات Multithreading

جافا دعمت تعدد المسارات Multithreading منذ إطلاقها.

هذا الدعم تمثّل في توفير واجهات برمجيّة APIs تسهّل وتيسّر للمبرمج تطوير البرامج التي تدعم المزامنة.

في مثال الفيديو هنالك عمليتين تحدثان أثناء تشغيل الفيديو:

  1. عمليةٌ لتحميل الفيديو.
  2. عمليةٌ أخرى من أجل تشغيله.
كل عملية منهما تسمى بمسار Thread.

تعدد المسارات Multithreading هي وسيلة لتحقيق المزامنة Concurrency في البرامج والتطبيقات، فتعدد المسارات يعني تشغيل أكثر من مسار في نفس الوقت.

مثلما هو من الصعب عليك أن تنقل أفكارك بين مكان وآخر فإن تطوير التطبيقات والبرامج التي تدعم تعدد المسارات يحتاج إلى تحليل دقيق وتركيز عالٍ أثناء البرمجة.

فبعض البرامج قد تحتاج إلى مسارات متعددة، بعضها يعيش من بداية تشغيل البرنامج إلى نهايتة وآخرٌ  يُنشأ ويموت أثناء تنفيذ البرنامج،

الخلاصة

جافا تدعم التزامن عبر إتاحة تعدد المسارات Multithreading وتوفر واجهات يستطيع المبرمج استخدامها لتطبيق التزامن بأبسط طريقة ممكنة.

من المهم جداً توفر التزامن في البرامج لرفع سرعة استجابة النظام. ولكن مع ذلك يجب استخدام التزامن بحكمة. التزامن الذي يعني تنفيذ أكثر من مهمة برمجية في نفس الوقت.



تواصل معنا !
فرع السعودية

(+966) 563215250

فرع السعودية
فرع مصر

(+020) 1050224848

فرع مصر

0228120106

فرع مصر

(+966) 563215250

فرع السعودية
فرع دبي

(+971) 543098007

فرع دبي
البريد الإلكتروني
مواعيد العمل

24 ساعة يوميا - 7 أيام فى الأسبوع