Eins: Warum möchten Sie alleine über multi -thread -abnormale Gefangennahme sprechen?
Schauen Sie sich zunächst ein Beispiel an:
Öffentliche Klasse ThreadException implementiert runnable {@Override public void run () {neue runTimeexception ();}: Die Konsole druckte eine abnormale Informationen für eine Zeitspanne aus. Die Thread Execution-Anweisung ist im Try-Catch-Block platziert, es gibt keine Hilfe.Eine Laufzeit -Abnormalität wurde manuell im Laufen gestartet, fangen im Hauptblock und druckte einen Satz. Das laufende Ergebnis ist wie unten gezeigt:
Es wurde festgestellt, dass die Anomalien in die Konsole geworfen wurden und die Aussagen im Fangblock nicht gedruckt wurden.
Schlussfolgerung: Multi -Thread -Operation kann bei der Ausführung von Abnormalitäten in der Reihenfolge nicht mit Abnormalitäten umgehen. Abnormale Flucht, die Aufgabe ist nicht in der Aufgabe.
Wir müssen also darüber nachdenken, wie wir Abnormalitäten in Multi -Threads erfassen können?
2. Erfassen Sie Abnormalitäten in Multi -Threaded
Befolgen wir die folgenden Schritte, um das Experiment abzuschließen:
1. Definieren Sie den Ausnahmeprozessor
Erfordert die Implementierung der Uncaughexception -Methode von Thread.uncaultExceptionHandler wie folgt: wie folgt:
/ * * 1. Schritt: Definieren Sie den "abnormalen Prozessor", der den thread abnormalen Prozessorspezifikation entspricht wird aufgerufen, wenn es fast tot ist
2. Definieren Sie die Fadenfabrik mit diesem abnormalen Prozessor
/** Schritt 2: Definieren Sie die Thread -Fabrik* Thread Factory, um die Aufgabe an den Thread anzuhängen, und binden Sie einen Thread an einen abnormalen Prozessor. println (dieses+"Neue Thread"); = "+T.GetungaugTexcegeptionler ()); return t;}}
3. Definieren Sie eine Aufgabe, damit sie eine Ausnahme auswerfen lässt
/ * * Schritt 3: Unsere Aufgabe kann eine Ausnahme () ausgeben. ;
4. Rufen Sie das Experiment an
/** Schritt 4: Verwenden Sie eine Thread -Fabrik, um einen Thread -Pool zu erstellen und seine Ausführungsmethode zu rufen*/public class ThreadExceptionCaughtexceptionHandler {public static void main (String [] args) {Executorser vice exec = executors.newcachedThreadpool (New HanLdrtyReadfactory () );Das laufende Ergebnis ist wie unten gezeigt:
3. Schlussfolgerung
Um die Anomalien zu erfassen, die von Multi -Thread -Threads in Java erzeugt werden, müssen Sie einen abnormalen Prozessor an die entsprechende Fadenfabrik anpassen (dh Schritt zuerst und zweite Schritte).
Viertens erweitern Sie
Wenn Sie wissen, dass der gleiche abnormale Prozessor überall im Code verwendet wird, besteht die einfachere Möglichkeit, eine statische Domäne in der Thread -Klasse festzulegen und diesen Prozessor auf den nicht zufriedenstellenden Prozessor zu setzen.
Dieser Prozessor wird nur ohne den richtigen unbefriedigenden Prozessor ohne Threads aufgerufen.
Public static void main (String [] args) {Thread.SetDefaultUntexceptionHandler (New MyuncaugexceptionHandler ());Das obige ist der gesamte Inhalt der abnormalen Erfassung des Multi -Thread -Multi -Thread -Multi -Threading von Java.