مؤشرات ترابط إنشاء Java (واجهة Runnable و Class)
في معظم الحالات ، يتم إنشاء مؤشر ترابط عن طريق إنشاء كائن مؤشر ترابط. تحدد Java طريقتين:
يصف ما يلي كل طريقة بدورها.
تنفيذ الواجهة القابلة للتشغيل
أسهل طريقة لإنشاء مؤشر ترابط هي إنشاء فئة تنفذ الواجهة القابلة للتشغيل. Runnable تجريد وحدة تنفيذ رمز. يمكنك إنشاء مؤشرات ترابط لكل كائن عن طريق تطبيق الواجهة القابلة للتشغيل. لتنفيذ واجهة Runnable ، يحتاج الفصل فقط إلى تنفيذ طريقة بسيطة للتشغيل () ، والتي يتم إعلانها على النحو التالي:
تشغيل الفراغ العام ()
في Run () ، يمكنك تحديد الكود لبناء مؤشرات ترابط جديدة. من الأهمية بمكان أن نفهم ما يلي: يمكن للطريقة Run () استدعاء طرق أخرى ، والرجوع إلى فئات أخرى ، وإعلان المتغيرات مثل الخيط الرئيسي. الفرق الوحيد هو أن Run () يحدد إدخال تنفيذ مؤشر ترابط متزامن آخر في البرنامج. عند الإرجاع () يعود ، ينتهي الخيط.
بعد إنشاء فئة تنفذ الواجهة القابلة للتشغيل ، تحتاج إلى إنشاء كائن من فئة مؤشر الترابط داخل الفصل. تحدد فئة الخيط العديد من المنشئين. ما سنستخدمه هو على النحو التالي:
الموضوع (Runnable ThreadOb ، string threadname)
في هذا المُنشئ ، يعد ThreadOB مثيلًا ينفذ فئة الواجهة القابلة للتشغيل. هذا يحدد نقطة الانطلاق لتنفيذ مؤشر الترابط. يتم تعريف اسم الموضوع الجديد بواسطة ThreadName.
بعد إنشاء مؤشر ترابط جديد ، لا يتم تشغيله حتى يتم استدعاء طريقة البداية () ، والتي يتم تعريفها في فئة الخيط. في الأساس ، يقوم Start () بتنفيذ مكالمة للتشغيل (). يتم الإعلان عن طريقة البداية () على النحو التالي:
بداية باطلة ()
المثال التالي هو إنشاء مؤشر ترابط جديد وبدء تشغيله:
// إنشاء موضوع ثانٍ : " + t) ؛ -) {system.out.println ("خيط الطفل:" + i) ؛ Out .println ("خيط الطفل المخرج.") ؛ 0 ؛ ) ؛
في مُنشئ NewThread ، يتم إنشاء كائن الخيط الجديد بواسطة العبارة التالية:
T = موضوع جديد (هذا ، "Through Thread") ؛
يشير هذا إلى أنه في هذا الكائن تريد أن يتصل مؤشر الترابط الجديد بالطريقة Run (). بعد ذلك ، يتم استدعاء () () ، وبدأ تنفيذ مؤشر الترابط مع طريقة Run (). هذا يسبب خيط الطفل للحلقة لبدء التنفيذ. بعد استدعاء Start () ، يعود مُنشئ NewThread إلى Main (). عند استعادة الخيط الرئيسي ، يصل إلى الحلقة. يستمر الخيوط في الركض ، ومشاركة وحدة المعالجة المركزية حتى تنتهي حلقةهما. إخراج هذا البرنامج كما يلي:
موضوع الطفل: موضوع [موضوع تجريبي ، 5 ، رئيسي] الموضوع الرئيسي: 5child موضوع: 5child موضوع: 4Main الموضوع: 4child موضوع: 3child موضوع: 2main الخيط: 3child الموضوع: 1e Xiting Child Thread.Main Thread: 2main Thread: 1main Thread .
كما ذكرنا سابقًا ، في برنامج متعدد الخيوط ، يجب أن يكون الخيط الرئيسي هو الخيط الأخير الذي ينتهي تشغيله. في الواقع ، بالنسبة لبعض JVMs القديمة ، إذا انتهى الخيط الرئيسي قبل خيط الطفل ، فقد يكون نظام تشغيل Java "تعليق". يضمن البرنامج المذكور أعلاه أن ينتهي الخيط الرئيسي في النهاية ، لأن الخيط الرئيسي ينام مقابل 1000 ميلي ثانية ، في حين أن خيط الطفل هو 500 مللي ثانية فقط. هذا يتسبب في انتهاء موضوع الطفل قبل انتهاء الخيط الرئيسي. باختصار ، سترى طريقة أفضل للانتظار حتى ينتهي الموضوع.
موضوع ممتد
هناك طريقة أخرى لإنشاء مؤشر ترابط تتمثل في إنشاء فئة جديدة تمتد فئة مؤشرات الترابط ، ثم تنشئ مثيلًا لتلك الفئة. عندما يرث فئة مؤشر ترابط ، يجب أن يحمل طريقة التشغيل () ، وهو الإدخال إلى مؤشر الترابط الجديد. يجب أيضًا استدعاء طريقة START () لبدء تنفيذ مؤشر الترابط الجديد. فيما يلي إعادة كتابة البرنامج السابق مع فئة الخيط الموسعة:
// إنشاء مؤشر ترابط ثانٍ عن طريق تمديد ThreadClass NewThread يمتد إلى {NewThread () {// إنشاء مؤشر ترابط ثانٍ جديد ("Thread thread") ؛ () ؛ ("خيط الطفل:" + i) ؛ ") ؛}} class ExtendThread {public static void main (string args []) {newThread () ؛ // إنشاء مؤشر ترابط جديد حاول {for (int i = 5 ؛ i> 0 ؛ i--) {system. out :::::::::::::. تقاطع مؤشر الترابط الرئيسي. ") ؛} system.ou t.println (" خروج مؤشر الترابط الرئيسي. ") ؛}}
يولد هذا البرنامج نفس الإخراج مثل الإصدار السابق. يتم إنشاء مؤشر ترابط الطفل بواسطة كائن NewThread الذي تم إنشاءه ، والذي يتم اشتقاقه من فئة الخيط. لاحظ المكالمة إلى Super () في NewThread. تستدعي هذه الطريقة مُنشئ مؤشر الترابط للنموذج التالي:
موضوع عام (سلسلة ThreadName)
هنا ، يحدد ThreadName اسم الموضوع.
اختر الطريقة الصحيحة
في هذه المرحلة ، ستتساءل بالتأكيد لماذا لدى Java طريقتان لإنشاء خيوط الأطفال ، أيهما أفضل. تُعزى جميع الأسئلة إلى نقطة واحدة. تحدد فئة الخيط مجموعة متنوعة من الطرق التي يمكن أن تكون مثقلة بواسطة الفئات المشتقة. بالنسبة لجميع الطرق ، فإن الشيء الوحيد الذي يجب أن يتم تحميله هو طريقة التشغيل (). هذه بالطبع نفس الطريقة المطلوبة لتنفيذ واجهة Runnable. يعتقد العديد من مبرمجي Java أنه يجب تمديد الفصول الدراسية فقط عند تعزيزها أو تعديلها. لذلك ، إذا لم تقم بتحميل طرق أخرى للمعلومات ، فمن الأفضل تنفيذ الواجهة القابلة للتشغيل فقط. بالطبع الأمر متروك لك لتقرر. ومع ذلك ، في أجزاء أخرى من هذا الفصل ، نطبق الفئات التي تنفذ الواجهة القابلة للتشغيل لإنشاء مؤشرات الترابط.