واحد: لماذا تريد التحدث عن التقاط متعدد الطوابق متعددة الفكين وحده؟
انظر أولاً إلى مثال:
تقوم ThreadException العامة بتنفيذ Runnable {Override Public Void Run () {رمي new RunTimeException () ؛}: طبعت وحدة التحكم معلومات غير طبيعية لفترة زمنية. يتم وضع عبارة تنفيذ مؤشرات الترابط في كتلة المحاولة ، لا توجد مساعدة.تم إلقاء شذوذ في وقت التشغيل يدويًا. النتيجة الجارية كما هو موضح أدناه:
وقد وجد أن التشوهات قد تم إلقاؤها في وحدة التحكم ، ولم تتم طباعة البيانات الموجودة في كتلة الصيد.
الخلاصة: لا يمكن للعملية المتعددة المعالجة بالتعامل مع تشوهات في عملية تنفيذ التشوهات بالترتيب. هروب غير طبيعي ، ستنتشر المهمة في المهمة.
لذلك ، يجب أن نفكر في كيفية التقاط تشوهات في الفواصل المتعددة؟
2. التقاط تشوهات في الفرات المتعددة
دعونا نتبع الخطوات أدناه لإكمال التجربة:
1. تحديد معالج الاستثناء
يتطلب تنفيذ طريقة uncaughtexception لـ thread.uncaultExceptionHandler ، على النحو التالي: على النحو التالي:
/ * * الخطوة الأولى: تحديد "المعالج غير الطبيعي" الذي يتوافق مع مواصفات المعالج غير الطبيعي * real.UncaughtexceptionHandler * / class myuncaugeptionhandler تنفذ معالج { / * * * thread.uncaughtexceptionhandler.uncaughtexception () يتم استدعاؤه عندما يكون ميتًا تقريبًا*/ Override public void uncaughtexception (thread t ، remable e) {system.out.println ("chaunt"+e) ؛}}}2. حدد مصنع الخيط باستخدام هذا المعالج غير الطبيعي
/** الخطوة 2: تحديد مصنع مؤشر الترابط* لتوصيل المهمة بالمعالج ، وربط مؤشر ترابط معالج غير طبيعي*/class hanlderthreadfactory ينفذ Threadfactory {Override Public ThreadRead (Run nable r) {system. println (إنشاء مؤشر ترابط جديد ") ؛ = "+t.getUncaughtexceGePtionler ()) ؛ إرجاع t ؛}}3. حدد مهمة للسماح لها بإلقاء استثناء
/ * الخطوة 3: ؛
4. اتصل بالتجربة
/** الخطوة 4: استخدم مصنع مؤشر ترابط لإنشاء مجموعة مؤشرات ترابط ، واستدعاء طريقة التنفيذ الخاصة به*/public class threadexceptionUncaughtexcehandler {public static void main (string [] args) ) ؛النتيجة الجارية كما هو موضح أدناه:
3. الخلاصة
لالتقاط التشوهات الناتجة عن خيوط متعددة الخيوط في Java ، تحتاج إلى تخصيص معالج غير طبيعي وتعيينه على مصنع الخيط المقابل (أي الخطوة الأولى والثانية).
رابع ، توسيع
إذا كنت تعلم أنه سيتم استخدام نفس المعالج غير الطبيعي في كل مكان في الكود ، فإن الطريقة الأكثر بساطة هي تعيين مجال ثابت في فئة مؤشرات الترابط وتعيين هذا المعالج على المعالج الافتراضي غير المرضي.
لا يتم استدعاء هذا المعالج إلا بدون المعالج غير المرضي المناسب بدون مؤشرات ترابط.
public static void main (string []
ما سبق هو جميع محتويات الالتقاط غير الطبيعي للمتعددة -متعددة الفروسية من جافا.