[2020-03-24] Java piscina preguntas de la entrevista hilo de siete argumentos detallados

 / ** 
     * Crea un nuevo { @code ThreadPoolExecutor} con las iniciales dadas 
     parámetros *. 
     * 
     * @Param corePoolSize el número de hilos para mantener en la piscina, incluso 
     * si están en reposo, a menos { @code allowCoreThreadTimeOut} se fija 
     * @param maximumPoolSize el número máximo de hilos que permiten la 
     piscina * 
     * @ param KeepAliveTime cuando el número de hilos es mayor que 
     * el núcleo, este es el tiempo máximo que el exceso de hebras en espera 
     * esperarán a nuevas tareas antes de terminar. 
     *@param unidad de la unidad de tiempo para la { @code argumento KeepAliveTime} 
     * @param WorkQueue la cola para su uso para la celebración de las tareas antes de que se 
     * ejecutados. Esta cola llevará a cabo sólo los { @code Ejecutables} 
     * tareas presentadas por el { @code método de ejecución}. 
     * @Param threadFactory la fábrica para utilizar cuando el ejecutor 
     * crea un nuevo hilo 
     * @param controlador del manipulador de utilizar cuando la ejecución se bloquea 
     * debido a los límites de rosca y capacidades de cola se alcanzan 
     * @throwsIllegalArgumentException si uno de cumple lo siguiente: <br> 
     * { @code corePoolSize <0} <br> 
     * { @code KeepAliveTime <0} <br> 
     * { @code maximumPoolSize <= 0} <br> 
     * { @code maximumPoolSize <corePoolSize} 
     * @throws NullPointerException si { @code WorkQueue} 
     * o { @code threadFactory} o { @code manejador} es nulo
      * / 
    público ThreadPoolExecutor ( int corePoolSize,
                               intmaximumPoolSize,
                               largo KeepAliveTime, 
                              unidad TimeUnit, 
                              BlockingQueue <Ejecutable> WorkQueue, 
                              ThreadFactory threadFactory, 
                              RejectedExecutionHandler handler)

A, corePoolSize hilo de núcleo tamaño de rosca piscina

grupo de subprocesos mantiene un número mínimo de hilos, incluso si la inactividad de procesamiento de hilo, que no será destruido a menos que un allowCoreThreadTimeOut. El número mínimo de hebras que aquí es corePoolSize.

 

Dos, maximumPoolSize grupo de subprocesos número máximo de hilos

Después de una tarea se presenta a la agrupación de hebras primero caché de cola de trabajo (que será presentado más adelante), si la cola de trabajo está llena, se crea un nuevo hilo, y luego entregado al nuevo hilo tomado de una tarea cola de trabajo de mango , pero la tarea acaba de presentar en la cola de trabajo. grupo de subprocesos no será la creación de un nuevo hilo de composición abierta, tendrá un límite máximo al número de hilos, el número que se especifica por el maximunPoolSize.

Tres, KeepAliveTime tiempo de supervivencia subproceso inactivo

Si un hilo está en un estado inactivo, y el número actual de hilos es mayor que corePoolSize, a continuación, después de un tiempo especificado, el subproceso inactivo será destruido, donde el conjunto de tiempo designado por KeepAliveTime

 

Cuatro, unidad de unidad de espacio hilo del tiempo de supervivencia

unidades KeepAliveTime de medición

 

Cinco, cola de trabajo WorkQueue

Después de la presentación de la nueva tarea, primero trabajar para entrar en esta cola, y luego quitar el trabajo de la cola cuando la programación. JDK proporciona cola de trabajo de cuatro:

①ArrayBlockingQueue

cola de bloqueo limitada basada en arreglos, ordenadas según la FIFO. Después de que las nuevas tareas vienen, será colocado en la cola de la cola, las matrices delimitadas pueden evitar el agotamiento de los recursos problema. Cuando el número de hilos en el grupo de subprocesos alcanza corePoolSize, y luego hay nuevas tareas vienen en, será la tarea en la cola de la cola, esperando a ser programado. Si la cola ya está lleno, a continuación, crear un nuevo hilo si el número de hilos de haber alcanzado maxPoolSize, se denegará la ejecución de la estrategia.

②LinkedBlockingQuene

Basándose en la lista de la cola de bloqueo sin límites (de hecho, una capacidad máxima de Interger.MAX), en orden FIFO. Dado que la no acotación aproximada, cuando el número de hilos en el grupo de subprocesos alcanza corePoolSize, y luego hay nuevas tareas entrar, habría sido almacenado en la cola, y no crear un nuevo hilo hasta maxPoolSize, a fin de utilizar la cola de trabajo para la cola, los parámetros maxPoolSize de hecho, no funciona.

③SynchronousQuene

Una tarea no el bloqueo de cola de caché, los productores ponen una tarea debe esperar hasta que el consumidor a cabo esta tarea. Esa es la nueva tarea entra, no se almacena en caché, sino directamente está programado para llevar a cabo esta tarea, si no hay ningún hilo, crear nuevos temas, si el número de hilos alcanza maxPoolSize, se negó a ejecutar la estrategia.

④PriorityBlockingQueue

cola de bloqueo sin límites con prioridad, la prioridad se logra mediante el parámetro Comparador.

 

Seis, fábrica de hilos threadFactory

La fábrica para uso cuando se crea un nuevo hilo, el hilo se puede utilizar para establecer el nombre, ya sea como hilos daemon, etc.

 

Siete, manejador de política de denegación

Cuando el trabajo de la cola de tareas ha alcanzado el límite máximo, y el número de hilos en el grupo de subprocesos se ha alcanzado el límite máximo, entonces si hay un nuevo envío de trabajos entrar, cómo manejar la situación. Aquí negar la política, que es resolver este problema, JDK proporcionada 4 estrategia de negación:

①CallerRunsPolicy

Bajo esta política, la aplicación del método de ejecución es rechazada tarea directamente en el hilo llamando a menos que el grupo de subprocesos se ha apagado, abandonar directamente la tarea.

②AbortPolicy

Bajo esta política, se descarta la tarea y un tiro excepción RejectedExecutionException.

③DiscardPolicy

Bajo esta política, se descarta la tarea, sin hacer nada.

④DiscardOldestPolicy

Bajo esta política, abandonado la cola para entrar en la primera tarea, a continuación, tratar de rechazar esta tarea en la cola

Supongo que te gusta

Origin www.cnblogs.com/july-sunny/p/12560533.html
Recomendado
Clasificación