ينتهي اجتماع خيوط Java بالطرق الثلاث التالية ، وهو في حالة وفاة بعد النهاية
1. يتم تنفيذ طريقة run() أو call() وينتهي الخيط بشكل طبيعي ؛
2. الخيط يلقي استثناء أو خطأ غير معلوم ؛
3. استدعاء مباشرة طريقة stop() من مؤشر الترابط لإنهاء مؤشر الترابط ؛
ملاحظة: عندما ينتهي الخيط الرئيسي ، لا تتأثر مؤشرات الترابط الأخرى بأي شكل من الأشكال ولن تنتهي به. بمجرد بدء تشغيل خيط الطفل ، يكون له نفس حالة الخيط الرئيسي ولن يتأثر بنهاية الخيط الرئيسي.
من أجل اختبار ما إذا كان مؤشر ترابط قد مات ، يمكن استدعاء طريقة isAlive() لكائن الخيط. عندما يكون الخيط في الحالات الثلاث الجاهزة ، الجري ، والحظر ، ستعود الطريقة بشكل صحيح ؛ عندما يكون الخيط في الحالة الجديدة والدولة الميتة ، ستعود الطريقة كاذبة.
يتم إجراء الاختبارات على 1 و 2 من مواقف الموت الخيط على النحو التالي.
رمز الموضوع الرئيسي هو كما يلي:
ThroundTest الفئة العامة {public static void main (string [] args) remrows interruptedException {thread t = new thread (new RunTask ()) ؛ T.Start () ؛ بينما (صحيح) {thread.sleep (1000) ؛ System.out.println ("الخيط الرئيسي: حالة خيط الطفل هو" + t.isalive ()) ؛ }}}الاختبار 1: بعد انتهاء الخيط بشكل طبيعي ، يعود isalive ()
اكتب رمز تنفيذ مؤشر الترابط حيث ينتهي الموضوع بشكل طبيعي:
تنفذ RunTask من الفئة العامة Runnable {Override public void run () {for (int idx = 1 ؛ idx <= 10 ؛ idx ++) {system.out.println ("subthread: ما زلت على قيد الحياة"+idx) ؛ حاول {thread.sleep (3000) ؛ } catch (interruptedException e) {E.PrintStackTrace () ؛ }}}} نتائج الإخراج للموضوعين على النحو التالي. بعد الانتهاء من التنفيذ الطبيعي لخيط الطفل ، سيعود Thread.isAlive() كاذبة.
الموضوع الرئيسي: حالة خيط الطفل هي ترابط الأساس الحقيقي: حالة خيط الطفل هي الخيوط الفرعية الحقيقية: ما زلت على قيد الحياة 8 الموضوع الرئيسي: حالة خيط الطفل هي ترابط الأساس الحقيقي: حالة خيط الطفل هي ترابط الأساس الأساسي: حالة الطفل هو الخيط الفرعي الحقيقي: خيط الطفل هو الحالة الرئيسية الأساسية: الموضوع: حالة خيط الطفل هي خطأ كاذب رئيسي: حالة خيط الطفل هي خطأ خاطئ الخيط الرئيسي: حالة خيط الطفل هي خطأ خاطئ الخيط الرئيسي: حالة خيط الطفل هو خطأ كاذب الأساس: حالة خيط الطفل هو خطأ خاطئ الخيط الرئيسي: حالة الطفل هو خاطئ الخيط الرئيسي: خيط الطفل حالة كاذبة رئيسية كاذبة. موضوع كاذب رئيسي: حالة خيط الطفل هي خاطئ الخيط الرئيسي: حالة خيط الطفل هي الخيط الرئيسي الخاطئة: حالة خيط الطفل هي خطأ رئيسي: حالة خيط الطفل هي موضوع رئيسي: حالة خيط الطفل كاذبة
الاختبار 2: بعد أن يلقي مؤشر ترابط الطفل استثناء ، يعيد مؤشر الترابط isAlive () خطأ
قم بتعديل رمز موضوع الطفل وإضافة رميات استثناء:
تنفذ RunTask من الفئة العامة Runnable {Override public void run () {for (int idx = 1 ؛ idx <= 10 ؛ idx ++) {system.out.println ("subthread: ما زلت على قيد الحياة"+idx) ؛ حاول {thread.sleep (3000) ؛ } catch (interruptedException e) {E.PrintStackTrace () ؛ } if (idx == 5) {رمي new runTimeException ("أنا أموت") ؛ }}}}تنفيذ مرة أخرى ومراقبة الإخراج:
الخيط الرئيسي: حالة خيط الطفل هي الخيط الرئيسي الحقيقي: حالة خيط الطفل هي ترابط الأساس الحقيقي: حالة خيط الطفل هي الخيوط الفرعية الحقيقية: حالة خيط الطفل هي الخيوط الفرعية الحقيقية: حالة خيط الطفل هي الخيط الرئيسي الحقيقي: حالة خيط الطفل هو الخيوط الفرعية الحقيقية: خيط الطفل هو الحالة الصحيح: أنا أموت في runtask.run (runtask.java:15) في java.lang.thread.run (thread.java:62) الموضوع الرئيسي: خيط الطفل حالة كاذبة الموضوع الرئيسي: حالة خيط الطفل هو موضوع كاذب: خيط الطفل هو خطأ
يمكن ملاحظة أنه بعد إلقاء الاستثناء ، ينتهي خيط الطفل مباشرة ويصبح حالة flase ؛
لخص
بعد انتهاء الخيط بشكل طبيعي ، أو يلقي الخيط استثناءً غير معطل ، يصبح الخيط ميتًا ، وتُرجع وظيفة ISALIVE () خطأ. حسنًا ، ما سبق هو المحتوى الكامل لهذه المقالة. آمل أن يكون محتوى هذه المقالة من بعض المساعدة في دراسة أو عمل الجميع. إذا كان لديك أي أسئلة ، فيمكنك ترك رسالة للتواصل.