شرح تعدد مؤشرات الترابط في جافا [مع أمثلة]

نشرت: 2021-06-15

جدول المحتويات

المواضيع في جافا

تساعد الخيوط في Java على التشغيل الفعال للبرنامج. الوحدتان الأساسيتان لتنفيذ النموذج الأولي هما العملية والخيوط. قد تكون العملية تطبيقًا أو برنامجًا أو بيئة تنفيذ قائمة بذاتها.

في حين أن الخيوط تشترك في مورد لتلك العملية وتوجد معها. يوجد مؤشر ترابط واحد على الأقل في كل تطبيق جافا يسمى الخيط الرئيسي. يمكن إنشاء خيوط متعددة من الخيط الرئيسي. تعرف على المزيد حول كيفية إنشاء سلسلة رسائل في Java.

فوائد Java Thread

  • مطلوب وقت وموارد أقل لإنشاء مؤشر ترابط مقارنة بالعمليات. لذلك تسمى الخيوط أيضًا عملية خفيفة الوزن.
  • يتم مشاركة بيانات العملية الأصلية ورمزها بواسطة مؤشرات الترابط.
  • التواصل بين الخيوط سهل مقارنة بالتواصل في العملية.
  • يمكن إنشاء الخيوط في Java من خلال تنفيذ java.lang. واجهة قابلة للتشغيل.

موضوع واحد

توجد عدة وحدات معالجة في برنامج يُشار إلى أصغرها باسم الخيط المفرد. من خلال استخدام "فئة الخيط" ، تطبق Java الخيوط. يوجد نوعان من الخيط. الخيط الخفي وخيط المستخدم.

عندما يتم تنظيف التطبيق ، يحدث استخدام خيط البرنامج الخفي. يعمل في خلفية التطبيق. بينما يتم إنشاء سلاسل رسائل المستخدم عند بدء التطبيق لأول مرة.

مزايا الخيط المفرد:

  • يتم تقليل الحمل الزائد للتطبيق حيث يحدث تنفيذ مؤشر ترابط واحد في النظام.
  • يتم تقليل تكلفة صيانة التطبيق باستخدام خيوط مفردة.

تعدد المهام في جافا

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

1. المعالجة المتعددة (تعدد المهام القائم على العمليات)

  • يتم تخصيص منطقة ذاكرة منفصلة لكل عملية. لذلك هناك عنوان لكل عملية في الذاكرة.
  • العمليات ثقيلة الوزن.
  • هناك تكلفة اتصال عالية بين العمليات.
  • بعض الوقت مطلوب للتبديل بين العمليات. هذا مطلوب لتحديث القوائم وخرائط الذاكرة وما إلى ذلك.

2. تعدد العمليات (تعدد المهام على أساس الخيط)

  • نفس العنوان مشترك بين المواضيع.
  • الخيوط خفيفة الوزن.
  • هناك تكلفة اتصال منخفضة بين المواضيع.

ما هو تعدد؟

عندما يتم تنفيذ خيطين أو أكثر في برنامج بشكل متزامن ، تتم الإشارة إلى الآلية باسم multithreading. عملية واحدة تخلق العديد من الخيوط لزيادة قوة الحساب. يتم تنفيذ جزأين أو أكثر من البرنامج بطريقة تؤدي إلى أقصى استفادة من وحدة المعالجة المركزية.

يشار إلى الخيوط على أنها الأجزاء الفردية من البرنامج. يمكن أن تحتوي العمليات في تطبيق ما على مؤشرات ترابط متعددة أو مؤشرات ترابط فردية.
يسمح Java Virtual Machine بخيوط متعددة للتطبيق. كل موضوع له الأولوية الخاصة به. لذلك ، يتم إعطاء الأفضلية للتنفيذ للخيوط التي لها أولوية أعلى من تلك التي لها أولوية أقل.

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

في الرسوم المتحركة والألعاب ، يتم استخدام Java multithreading . انقر فوق إذا كنت تريد معرفة المزيد حول بنية ومكونات Java.

يمكن استخدام آليتين لإنشاء خيوط.

1. تمديد فئة الموضوع

2. تنفيذ واجهة التشغيل

فئة الخيط مقابل الواجهة القابلة للتشغيل

  • لا يمكن أن يؤدي تمديد "فئة مؤشر الترابط" إلى توسيع الفئات الأخرى نظرًا لأن الوراثة المتعددة غير مدعومة في Java. ولكن مع تنفيذ الواجهة "Runnable" ، يمكن تمديد الفئات الأساسية الأخرى من الفئة.
  • يمكن تمديد الوظيفة الأساسية للخيط من خلال تمديد فئة الخيط حيث يتم توفير طرق مضمنة مثل المقاطعة () ، العائد () ، إلخ.
  • سيتم توفير كائن يمكن أن تشاركه مؤشرات ترابط متعددة عند استخدام قابل للتشغيل.

فئة Java Thread

يتم تحقيق برمجة الخيوط في Java من خلال فئة الموضوع. يتم توفير المُنشئين بواسطة فئة الخيط وطرق إجراء عمليات الخيط. تقوم فئة مؤشر الترابط بتنفيذ واجهة قابلة للتشغيل وتوسيع فئة الكائن.

بعض طرق الخيط الشائعة المستخدمة هي:

  1. start (): يتم بدء تنفيذ مؤشر الترابط بهذه الطريقة. يتم استدعاء طريقة run () بواسطة JVM.
  2. السكون (مللي ثانية int): يتم إيقاف تنفيذ الخيط مؤقتًا لأجزاء من الثانية التي يتم توفيرها حيث يتم جعل عملية الخيط في وضع السكون من خلال هذه الطريقة. بعد التوقف ، يبدأ تنفيذ الخيط مرة أخرى. يمكن مزامنة الخيوط من خلال هذه الطريقة.
  3. getName (): يتم إرجاع اسم مؤشر الترابط من خلال هذه الطريقة.
  4. setPriority (أولوية جديدة int): يتم تغيير أولوية مؤشر الترابط من خلال هذه الطريقة.
  5. العائد (): تم إجراء الخيط الحالي للتوقف مع تنفيذ الخيوط الأخرى بهذه الطريقة.
  6. run (): الطريقة لبدء إجراء في السلسلة.
  7. getPriority (): يتم إرجاع أولوية مؤشر الترابط من خلال استخدام هذه الطريقة.
  8. setName (): يتم تغيير اسم مؤشر الترابط من خلال هذه الطريقة.
  9. getId (): يتم إرجاع معرف مؤشر الترابط من خلال هذه الطريقة.
  10. تعليق (): يتم تعليق الخيط من خلال هذه الطريقة.

دورة حياة الخيط

تحتوي دورة حياة الخيط على مراحل مختلفة ، وهي مذكورة أدناه:

  1. جديد: يتم استخدام "فئة الموضوع" لإنشاء موضوع في هذه المرحلة. حتى يتم بدء الخيط ، يبقى البرنامج في هذه المرحلة. تسمى الطريقة أيضًا الخيط المولود.
  2. Runnable: تستدعي طريقة البدء مثيل مؤشر الترابط في هذه المرحلة من دورة حياة مؤشر الترابط. يتم تسليم المجدول مع التحكم في مؤشر الترابط لإنهاء التنفيذ. يعتمد ما إذا كان يجب تنفيذ مؤشر الترابط أم لا على المجدول.
  3. قيد التشغيل: بمجرد بدء تنفيذ الخيط ، تنتقل المرحلة إلى مرحلة "التشغيل". يتم تحديد مؤشر ترابط واحد بواسطة المجدول من مجموعة الخيوط ويبدأ في تنفيذ التطبيق.
  4. الانتظار : كما يوحي الاسم ، ينتظر مؤشر الترابط في هذه المرحلة من دورة الحياة. تعد مزامنة الخيط أمرًا ضروريًا نظرًا لتشغيل سلاسل رسائل متعددة في أحد التطبيقات. لذلك ، هناك ضرورة لانتظار الخيط ، حتى ينتهي تنفيذ الخيط الآخر. لذلك ، تُعرف أيضًا مرحلة دورة الحياة بمرحلة الانتظار.
  5. ميت: المرحلة التي يحدث فيها إنهاء الخيط تسمى المرحلة "ميتة". بمجرد نقل الخيط من التشغيل إلى نهاية المعالجة ، يتم إنهاؤه وبالتالي يصبح في "الحالة الميتة"

مزامنة الموضوع في جافا

يحدث السلوك غير المتزامن في البرنامج في حالة تعدد مؤشرات الترابط. إذا كان من المفترض أن تتم كتابة البيانات من خلال مؤشر ترابط واحد وتم قراءة البيانات بواسطة مؤشر ترابط آخر في وقت واحد ، فقد يحدث عدم تناسق في التطبيق.

الموارد التي يتم مشاركتها بين سلاسل الرسائل يجب أن يتم الوصول إليها بواسطة مؤشرات الترابط الأخرى. لذلك في مثل هذه الحالات ، يتم الاقتراب من نهج التزامن. تتوفر الطرق المتزامنة في Java لتحقيق سلوك المزامنة.

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

تعلم دورات البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.

مزايا تعدد العمليات

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

مثال على تعدد مؤشرات الترابط

تم عرض مثال على برنامج متعدد مؤشرات الترابط في جافا أدناه:

مصدر

الشكل 1: مقتطف من مثال التعليمات البرمجية متعددة مؤشرات الترابط

شرح الكود

السطر 3: الفئة "GuruThread1" تطبق runnable.

السطر 8: يعرض الطريقة الرئيسية للفصل.

السطر 9: يتم إنشاء مثيل لفئة مؤشر الترابط ويتم إنشاء مثيل "guruThread1" ويتم إنشاء سلسلة رسائل.

السطر 10: يتم إنشاء مثيل "فئة مؤشر الترابط" ويتم إنشاء مثيل "guruThread2" ويتم إنشاء سلسلة رسائل.

السطر 11: بدأ الخيط المسمى guruThread1.

السطر 12: بدأ الخيط المسمى guruThread2.

السطر 13: تم إخراج النص "أسماء الخيط التالية:".

السطر 14: يتم استخدام طريقة getName () للحصول على اسم thread1.

السطر 15: يتم استخدام طريقة getName () للحصول على اسم thread2.

ينتج عن تنفيذ الكود أعلاه المخرجات التالية:

مصدر

الشكل: لقطة شاشة للإخراج الذي تم إنشاؤه من برنامج تعدد مؤشرات الترابط في Java (مأخوذ من

خاتمة

ناقش المقال مفهوم تعدد مؤشرات الترابط في Java جنبًا إلى جنب مع مثال لبرنامج متعدد مؤشرات الترابط في جافا. تعلمك لا يتوقف هنا ويتوافق مع جميع المفاهيم الأساسية الأخرى لجافا.

إذا كنت مهتمًا بإتقان مهارات البرمجة الخاصة بك بسعر مناسب وتجعل نفسك جاهزًا للصناعة ، يمكنك التحقق من الدورة التي تقدمها upGrad "ماجستير العلوم في علوم الكمبيوتر". إنه مخصص لجميع المهنيين من المستوى المتوسط ​​ضمن الفئة العمرية من 21 إلى 45 عامًا. الدورة معتمدة من جامعة ليفربول جون مورس ، وتم تصميمها بأكثر من 500 ساعة من التعلم ، و 309 مشروعًا ، ومهامًا لتحقيق أقصى استفادة منك. إذا كان لديك أي استفسارات ، أرسل لنا رسالة ، فسيقوم فريقنا بالاتصال بك.

انطلق في وظيفة أحلامك

تقدم لبرنامج Executive PG في تطوير البرمجيات من IIIT-B