Significado del 'tamaño de la piscina núcleo' en el constructor de PROGRAMEDTHEADPOOLEXECUTOR -- java campo con threadpool campo con threadpoolexecutor camp Relacionados El problema

meaning of 'core pool size' in ScheduledThreadPoolExecutor's constructor


15
vote

problema

Español

Soy nuevo en public IQueryable<CustomerMain> testing() { var context = new CustomerEntities(); var query = context.CustomerMains .Where(p=> p.FirstName == "Thor") .Select(p => new CustomerMain {FirstName=p.FirstName,LastName =p.LastName}); return query; } 4 (Como usualmente uso el simple CustomerMain15 , pero la gente ha estado aconsejando en su contra), y no entiendo bien qué haría ser el valor entero apropiado para pasar al constructor CustomerMain16 .

¿Podría alguien explicar esto?

Gracias

Original en ingles

I'm new to ScheduledThreadPoolExecutor (as I usually use the simple Timer, but people have been advising against it), and I don't quite understand what would be the appropriate integer value to pass to the ScheduledThreadPoolExecutor(int) constructor.

Could anyone explain this?

Thank you

        
 
 

Lista de respuestas

12
 
vote

En el caso de i2 , i3 es el número máximo de hilos que se crearán para realizar acciones programadas. Esta piscina de hilo es de tamaño fijo e hilos de ralentí se mantienen vivos.

La respuesta de BurynRabbit es simplemente IATIG, ya que i4 DOCS dice explícitamente que (no habrá espigas de recuento de hilos):

Mientras que esta clase hereda de ThreadpoolExectutor, algunos de los Los métodos de sintonización heredados no son útiles para ello. En particular, porque Actúa como una piscina de tamaño fijo que utiliza hilos de PeePoolSize y un La cola ilimitada, los ajustes a maximumpolsize no tienen efecto útil.

Ahora que para el valor, el número razonable sería el número de núcleos de CPU que la aplicación se está ejecutando.

 

In case of ScheduledThreadPoolExecutor, corePoolSize is maximum number of threads that will be created to perform scheduled actions. This thread pool is fixed-sized and idle threads are kept alive.

DrunkenRabbit's answer is simply ivalid because ScheduledThreadPoolsExecutor docs says explicitly that (There will be no thread count spikes at all):

While this class inherits from ThreadPoolExecutor, a few of the inherited tuning methods are not useful for it. In particular, because it acts as a fixed-sized pool using corePoolSize threads and an unbounded queue, adjustments to maximumPoolSize have no useful effect.

Now as for the value, reasonable number would be number of CPU cores that application is running on.

 
 
1
 
vote

Esencialmente, el CorpoolSize es el número de hilos para mantener en la piscina.

por ejemplo. Si espera 10 solicitudes concurrentes de forma regular, pero los picos de 20. El SIGNIO COREPOOLSIZE debe ser 10 y MAX como 20. De esta manera, el Ejecutor creará hasta 10 hilos nuevos, incluso si los hilos de espera están disponibles para su uso.

Como se indica en la javadocs

Tamaños de la piscina máxima y máxima

Un threadpoolExecutor ajustará automáticamente el tamaño de la piscina (consulte GetPoolSize ()) de acuerdo con los límites establecidos por CorePoolSize (consulte GetCorePoolSize ()) y MaximumMoolSize (vea getMaximumMoolSize ()). Cuando se envía una nueva tarea en el método Ejecutar (java.lang.runnable), y se están ejecutando menos de las subprocesos básicos, se crea un nuevo hilo para manejar la solicitud, incluso si otros hilos de los trabajadores están inactivos. Si hay más que el tamaño básico, pero menos de los subprocesos de MaximumMoolsize, se creará un nuevo hilo solo si la cola está llena. Al establecer CorePoolSize y MaximumpOolsize lo mismo, crea un grupo de hilos de tamaño fijo. Al configurar MaximumMoolsize a un valor esencialmente ilimitado, como INTEGER.MAX_VALUE, le permite al grupo acomodar un número arbitrario de tareas concurrentes. El tamaño de la piscina más típico y máximo se establece solo en la construcción, pero también se pueden cambiar dinámicamente utilizando SetCorePoolSize (int) y setmaximaolsize (int).

 

Essentially, the corePoolSize is the number of Threads to maintain in the pool.

eg. if you expect 10 concurrent requests on a regular basis, but peaks of 20. The corePoolSize should be 10 and max as 20. This way the executor will create up to 10 new threads, even if idle threads are available for use.

As stated in the JavaDocs

Core and maximum pool sizes

A ThreadPoolExecutor will automatically adjust the pool size (see getPoolSize()) according to the bounds set by corePoolSize (see getCorePoolSize()) and maximumPoolSize (see getMaximumPoolSize()). When a new task is submitted in method execute(java.lang.Runnable), and fewer than corePoolSize threads are running, a new thread is created to handle the request, even if other worker threads are idle. If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full. By setting corePoolSize and maximumPoolSize the same, you create a fixed-size thread pool. By setting maximumPoolSize to an essentially unbounded value such as Integer.MAX_VALUE, you allow the pool to accommodate an arbitrary number of concurrent tasks. Most typically, core and maximum pool sizes are set only upon construction, but they may also be changed dynamically using setCorePoolSize(int) and setMaximumPoolSize(int).

 
 
     
     

Relacionados problema

8  Piscina de hilos fijos de ThreadpoolExecutor con comportamiento personalizado  ( Threadpoolexecutor fixed thread pool with custom behaviour ) 
Soy nuevo en este tema ... Estoy usando un threadpoolExecutor creado con Ejecutors.NewFixedThreadPool (10) y después de que la piscina esté llena, estoy empez...

0  No LEVELDBJNI64-1.8 en Java.Library.Path Excepción mientras ejecuta AKKA Project  ( No leveldbjni64 1 8 in java library path exception while running akka project ) 
Estoy tratando de iniciar un proyecto existente de la clase principal. Pero obteniendo la excepción a continuación. java.lang.unsatisfiedlinkError: No se p...

7  Lista de Procesos de artículos 'N' con múltiples hilos  ( Process list of n items with multiple threads ) 
Tengo List de N artículos y quiero dividir esta List de manera secuencial entre un número fijo de threads . Por medio secuencial que, quiero pasar 1...

0  Java ThreadpoolExecutor para la gestión de sonido Exhibe un error peculiar  ( Java threadpoolexecutor for sound management exhibits peculiar bug ) 
He creado una clase que se extiende en el extremexecutor de Java que usa sus hilos para reproducir sonidos. Este ejecutor recibe objetos de una clase de sonid...

2  La aplicación ThreadpoolExecutor no termina  ( Threadpoolexecutor application does not finish ) 
Esta aplicación súper simple imprime "Hola" pero no termina. No veo absolutamente ninguna razón por la que esto debería ser. javadoc , sección finalización...

6  ¿Es el hilo inactivo que toma la CPU Ejecute el tiempo en los ejecutores de Java?  ( Is idle thread taking cpu execute time in java executors ) 
Cuando tengo este código en una aplicación: Executors.newFixedThreadPool(4); Pero nunca uso este grupo de hilos. ¿Los hilos inactivos consumirán el tie...

63  ¿Cómo esperar a que todas las tareas en un EXTRECTORETORTE DE THEARTHOOLEXETOR? Sin cerrar el ejecutor?  ( How to wait for all tasks in an threadpoolexecutor to finish without shutting do ) 
No puedo usar shutdown() y awaitTermination() Debido a que es posible que se agreguen nuevas tareas al FLOOLEXECUTOR mientras está esperando. Así que es...

0  Java ThreadpoolExecutor Time-Out no honrado  ( Java threadpoolexecutor time out not honored ) 
En mi solicitud, hemos utilizado un grupo de hilos, hemos especificado un tiempo de espera a la piscina de los hilos, pero parece que no se llama el tiempo de...

1  ThreadpoolExecutor Compruebe si cierta tarea está en cola  ( Threadpoolexecutor check if certain task is in queue ) 
Tengo una conexión en serie que solo será utilizada por un solo hilo. Pero antes de enviar una nueva tarea a los ejecutores, quiero verificar si esa tarea ya ...

0  ThreadpoolExecutor con método de clase y argumento  ( Threadpoolexecutor with class method and argument ) 
Tengo el siguiente código: client = Client() client.fetchInfo('EUR') # works perfectly pero si intenté paralelar with ThreadPoolExecutor(max_workers...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos