Java grupo de subprocesos 8 gran política de denegación, se le pedirá a la entrevista!

Hablando agrupación de hebras de Java más familiar que las interfaces ExecutorService, esta API con un nuevo paquete de java.util.concurrent jdk1.5, lo que simplifica enormemente el desarrollo de código multiproceso. Y si se utiliza FixedThreadPool detrás de su aplicación sigue siendo CachedThreadPool ThreadPoolExecutor. ThreadPoolExecutor grupo de búfer es un diseño típico del producto, debido a que el tamaño de la piscina cuando la piscina no es suficiente volumen de la portadora, que implica la política de rechazo. JDK tiene cuatro estrategia preestablecida negación grupo de subprocesos, en conjunción con las siguientes escenas detalladas hablamos de estas estrategias utilizamos escena, y rechazamos las políticas que podría expandirse.

Ideas de diseño de la piscina

diseño de la piscina, entonces no debería ser un nuevo término. A medida que nuestra piscina java hilo común, de conexiones JDBC, Redis agrupaciones de conexiones es representar este tipo de implementación del diseño. Este diseño recursos inicialmente por defecto para resolver el problema es para compensar el consumo de cada acceso a los recursos, como los gastos de creación de rosca, gastos generales obtener conexión remota y así sucesivamente. Al igual que ir a la cafetería Dafan Dafan tía pondría varias lugar buena Iimori donde entraste directamente a la celebración de un alimento caja de almuerzo para comer, que no tienen una retención temporal de arroz y la lucha de alimentos, la eficiencia es alta. Además del recurso de inicialización, que comprende además el diseño de la piscina de estas características: valor inicial, el valor activo del estanque, el estanque máximo estanque, etc. Estas características se pueden asignar directamente al miembro de atributos de agrupaciones de hebras de Java y agrupación de conexiones de base de datos.

Subproceso del grupo de tiempo de disparo se negó estrategia

Y la agrupación de conexiones de origen de datos no es lo mismo, excepto que el tamaño inicial del grupo de subprocesos y el estanque máximo, más de una cola tampón de bloqueo. Excede el número máximo de agrupación de conexiones cuando la conexión de origen de datos está conectado a una fuente general denegar la petición de la política se activa, el tiempo de espera es una estrategia de bloqueo se proporciona generalmente una excepción, ya sea directamente tirado.

¿Quieres saber cuándo desencadenar el rechazo áspera grupo de subprocesos, necesitará un significado claro y determinado de los anteriores tres parámetros, la coordinación general de estos tres resultados de los parámetros, en lugar de simplemente excede el número máximo de subprocesos en el hilo activará áspera negación, cuando la tarea presentada cuando el número es mayor que corePoolSize, pondrá prioridad de la cola buffer, el buffer se llena solamente, determinará si la tarea se ejecuta actualmente es mayor que maxPoolSize, se creará un nuevo hilo de procesamiento es inferior. Mayor de lo que hace que una estrategia de negación.

**

Rechazo política de definición de interfaz:

[Java]

__ copiar el código en la vista de texto sin formato

 

?

public interface RejectedExecutionHandler {

void rejectedExecution(Runnable r, ThreadPoolExecutor executor);

}

definición de interfaz es muy clara, cuando la política de rechazo del gatillo, piscina subproceso llama a establecer estrategias específicas, actualmente comprometidos con la instancia de tarea y el hilo de la piscina en sí pasaron a tratar con usted, por lo que un tratamiento específico, diferentes escenarios tendrá consideraciones diferentes, Echemos un vistazo a lo que JDK construido para nosotros lograr:

CallerRunsPolicy (estrategia operativa persona que llama)

[Java]

__ copiar el código en la vista de texto sin formato

 

?

public static class CallerRunsPolicy implements RejectedExecutionHandler {

public CallerRunsPolicy() { }

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {

if (!e.isShutdown()) {

r.run();

}

}

}

Función: Cuando la política de rechazo del disparador, se negó a efectuar un tiro directo una excepción, la política de suspensión está destinado a interrumpir el flujo de corriente de la ejecución

escenarios de uso: esto no es una escena en particular, pero lo que hay que tirar el manejo de excepciones. ThreadPoolExecutor estrategia por defecto es AbortPolicy configuración de la interfaz serie ThreadPoolExecutor ExecutorService no se muestran porque negar la política, por lo que el valor por defecto es la siguiente.

DiscardPolicy (política de descarte)

[Java]

__ copiar el código en la vista de texto sin formato

 

?

public static class DiscardPolicy implements RejectedExecutionHandler {

public DiscardPolicy() { }

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {

}

}

Características: tranquila directa descartar esta tarea, no desencadena ninguna acción

escenarios de uso: Si la tarea de presentar no importa, se puede usar. Porque está vacío logra, se tragará su tarea en silencio. Así que esto no es básicamente una estrategia

**

DiscardOldestPolicy (abandonar las estrategias de edad)

[Java]

__ copiar el código en la vista de texto sin formato

 

?

<strong>`pública estáticas clase DiscardOldestPolicy implementos RejectedExecutionHandler {`

public DiscardOldestPolicy() { }

public void rejectedExecution(Runnable r, ThreadPoolExecutor e) {

if (!e.isShutdown()) {

e.getQueue().poll();

e.execute(r);

}

}

}</strong>

Función: Si el grupo de subprocesos no está cerrada, la cabeza de la cola aparecerá elementos, y luego tratar de llevar a cabo

Uso escena: no se lleva a cabo esta estrategia tarea todavía descarte, pero también hay sonido, al ser descartado, pero se caracteriza por descartada la antigua tarea y las tareas a realizar es una prioridad más alta.

Mensaje en función de esta característica, se me ocurre esa escena, enviar mensajes, y modificar los mensajes después de que el comunicado de prensa salió, no se habían aplicado, a continuación, actualizar las noticias de nuevo, esta versión de tiempo del mensaje no es presentada por el Ejecutivo que en la actualidad versión inferior puede ser desechada. Dado que la cola no puede existir una versión inferior del mensaje, el mensaje se pondrá en cola para su ejecución, por lo que cuando en realidad se procesa el mensaje debe ser una buena noticia Comparación de versiones

 

Publicados 964 artículos originales · ganado elogios 11 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/xiaoyaGrace/article/details/105400452
Recomendado
Clasificación