threadpool più grande o ExecutorService supplementare quando nuovo tipo di filo verrà eseguito?
-
26-09-2019 - |
Domanda
Ho una domanda che è legato alla possibile sovraccarico di ExecutorService
s in Java.
La presente realizzazione ha ExecutorService A
con una capacità di 5 fili.
- Si corre le discussioni di tipo
A
. - discussioni tipo
A
fare un po 'di lettura e scrittura del database.
Ora, un filo di tipo B
verrà eseguito dopo alcuni fili di tipo A
ha terminato.
- Il numero di fili di tipo
B
che eseguiranno diverso di volta in volta. - discussioni tipo
B
fare qualche filesystem IO (il database).
Quindi dovrei
- aggiungere un nuovo
ExecutorService
al tipo di manigliaB
discussioni - o devo aumentare la capacità di
ExecutorService A
e tipo run discussioniB
con quella pure?
mi viene da pensare che ci potrebbe essere un certo overhead in più per Java per avere due ExecutorService
s, ma d'altra parte il numero totale di thread aumenterà in entrambi i modi. Ha importanza a tutti?
Soluzione
Io vi consiglio due ExecutorServices
, allora si può usufruire dei diversi ExecutorService
s fornite dal pacchetto java.util.concurrent
.
Si rende il codice più semplice e il sovraccarico è ignorabile.
-
ExecutorService
una con un set piscina filo fissato a cinque fili. -
ExecutorService
b con un pool di thread cache.
Altri suggerimenti
Se si sta parlando di 5 discussioni, e non sei esaurire la capacità del pool di thread, tenderei a dire che il sovraccarico woulld essere insignificante in entrambi i casi, e si dovrebbe solo andare tutto ciò che riteniamo essere la via più semplice .