Ho eseguito il test di carico sulla mia applicazione per trovare il numero massimo di thread necessari per supportare il carico pianificato.Java CachedThreadPool vs FixedThreadPool
Ho utilizzato ExecutorService
CachedThreadPool
in modo che i thread vengano creati dinamicamente in base al carico. Ora conosco il valore del numero massimo di thread usando getLargestPoolSize()
.
Devo sostituire CachedThreadPool
con FixedThreadPool(maxValue)
, per evitare la grande comportamento creazione (Integer.MAX_VALUE)
filo di CachedThreadPool
?
Proporre pro e contro di ciascuno di essi.
A cosa "* comportamento di creazione di thread di grandi dimensioni *" si riferisce? Intendi il fatto che un pool di thread memorizzato nella cache creerà un nuovo thread se non ce ne sono disponibili? Se è così, la domanda migliore è "* Mi dispiacerebbe che i miei thread venissero bloccati se mi capitasse di inviare un'altra attività mentre tutti i thread di lavoro non sono disponibili? *" Ricorda che un pool di thread in cache distruggerà i thread dopo un certo periodo di tempo . Anche se conosci il conteggio massimo, qual è il conteggio medio? Se il conteggio massimo è 10, ma la media è 4, non avrebbe molto senso mantenere in vita 10 thread. –
comportamento di creazione di thread di grandi dimensioni - Se qualcuno invia troppe richieste, cacheThreadPool non deve creare thread Integer.MAX_VALUE – MIK
Trova alcune altre risposte valide @ https://stackoverflow.com/questions/17957382/fixedthreadpool-vs-cachedthreadpool-the-lesser- di-due-mali / –