Sto cercando di capire il punto in cui specificare il core separato e le dimensioni massime del pool per ThreadPoolExecutor di Java 5. La mia comprensione è che il numero di thread è aumentato solo quando la coda è piena, il che sembra un po 'in ritardo (almeno con code più grandi).Quando si specificano le dimensioni del pool principale e massimo in ThreadPoolExecutor una buona idea?
Non è che sia felice di assegnare un numero maggiore di thread alle attività, nel qual caso potrei semplicemente aumentare la dimensione del pool principale; o non sono davvero disposto a farlo, nel qual caso dovrei avere una coda più grande? Qual è uno scenario in cui le dimensioni del core e del pool massimo sono utili?
Ma poi potrei eseguire con più thread per iniziare - altrimenti aggiungo semplicemente la latenza alle attività in attesa in coda. Sospetto anche che in molti scenari in cui la coda si riempie potrebbe riempirsi velocemente, nel qual caso i thread aggiuntivi potrebbero arrivare troppo tardi. –
@Peter, se l'analisi statica è sufficiente per prevedere il numero corretto di thread da utilizzare in un carico eccessivo e sei contento di avere quei thread in più seduti durante il normale caricamento, quindi fallo! È un compromesso tra un tempo di spin-up del thread una tantum sotto carico o un utilizzo extra di risorse quando il carico è basso. – Bringer128