سؤال

أرغب في قتل الخيوط العالقة في حالة طريق مسدود. أولا، يمكننا كشف معرفات الخيط في حالة طريق مسدود باستخدام findDeadlockedThreads() طريقة ThreadMXBean فئة في java.lang.management.

ثم، أود أن أقتل الخيوط حسب معرفات الخيط، وبالتالي لدي أسئلان ذي صلة:
(1) كيفية التحكم في مؤشر ترابط حسب معرف الصفحات؟
(2) كيفية قتل موضوع محظور؟ أعتقد أن طريقة الإثارة المقاطعة () ستمنح استثناء من الخيط وسيقتل الخيط.

هل كانت مفيدة؟

المحلول

من مجموعة Threadgroup الجذر، يمكنك الحصول على فئة مؤشر الترابط تعداد جميع المواضيع قيد التشغيل. وبعد ثم يمكنك الاتصال بالخيط. Stop On The One الذي يطابق معرفك.

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

أنظر أيضا: "جافا موضوع الإهمال البدائي".

نصائح أخرى

java.util.concurrent.lock.lockinterlasterly () طريقة قابلة للمقاطع، القفل المتزامن الأكثر بكثير غير متزامن ليس كذلك. كما ذكرنا في الوثائق، فإن القدرة على تعداد المواضيع الجماعية مخصصة لها كمساعد تصحيح الأخطاء وليس كوسيلة للتعافي في بيئة الإنتاج.

في الإنتاج، ربما يكون أكثر أمانا للخروج من العملية بأكملها وإعادة التشغيل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top