Uno: ¿Por qué quieres hablar solo de captura anormal multifresalte?
Primera mira a un ejemplo:
Public class ThreadException implementa Runnable {@Override public void run () {Throw New RuntimeException ();}: la consola imprimió una información anormal por un período de tiempo. La instrucción de ejecución de hilos se coloca en el bloque de captura de try, no hay ayuda.Se lanzó una anormalidad de tiempo de ejecución manualmente en ejecución. El resultado de ejecución es como se muestra a continuación:
Se descubrió que las anormalidades fueron arrojadas a la consola, y las declaraciones en el bloque de captura no se imprimieron.
Conclusión: la operación múltiple no puede manejar anormalidades en el proceso de ejecutar anormalidades en orden. Escapas anormales, la tarea está fuera de la tarea.
Entonces, ¿debemos pensar en cómo capturar anormalidades en múltiples huéspedes?
2. Capturar anormalidades en múltiples hechos
Sigamos los pasos a continuación para completar el experimento:
1. Defina el procesador de excepción
Requiere implementar el método de ExpelledException de Thread.CoultExceptionHandler, de la siguiente manera: como sigue:
/ * * 1er paso: Defina el "procesador anormal" que cumple con el hilo especificación del procesador anormal * real.UncAphedExceptExceptionHandler Especificaciones * / class myNunceptionHandler implementa el controlador { / * * thread.unceughtExceptionHandler.UncedException () se verá enhebrado de la captura de la anormalidad de la anormalidad de la anormalidad se llama cuando está casi muerto*/ @Override public void Unsappaging Exception (Thread t, Throwable E) {System.out.println ("atrapado"+e);}}}2. Defina la fábrica de hilos utilizando este procesador anormal
/** Paso 2: Defina la fábrica de hilos de hilo* Factory de subprocesos para adjuntar la tarea al hilo y unir un hilo a un procesador anormal*/clase HanlderthreadFactory implementa ThreadFactory {@Override public Threadread (ejecutar nable r) {System. println (this "creando un nuevo hilo"); = "+T.getUncUnteChExCeGeCtionLer ()); return t;}}3. Defina una tarea para dejar que organice una excepción
/ * * Paso 3: nuestra tarea puede lanzar una excepción. ;
4. Llame al experimento
/** Paso 4: use una fábrica de hilos para crear un grupo de subprocesos y llame a su método Ejecutivo*/public shreadExceptionUngageughExceptionHandler {public static void main (string [] args) {Ejecutorser vice exec = ejecutors.newcachedthreadpool (new HandrtyreadFactory () () );El resultado de ejecución es como se muestra a continuación:
3. Conclusión
Para capturar las anormalidades generadas por los hilos multifreactivos en Java, debe personalizar un procesador anormal y establecerlo en la fábrica de hilos correspondiente (es decir, pase primero y segundo pasos).
Cuarto, expandir
Si sabe que el mismo procesador anormal se utilizará en todas partes del código, la forma más simple es establecer un dominio estático en la clase de subprocesos y establecer este procesador en el procesador insatisfactorio predeterminado.
Este procesador se llama solo sin el procesador insatisfactorio adecuado sin hilos.
Public static void main (string [] args) {thread.setDefaultUngageSceptionHandler (new MyNunceGexceptionHandler ());Lo anterior es todo el contenido de la captura anormal de la múltiple hilos múltiples de Java.