Per quanto ne so, sia la lista collegata che la matrice possono crescere senza limiti o sbaglio? Ma quando ho attraversato il documentation in the Executor Service vedo questo:Perché l'ArrayBlockingQueue viene chiamato una coda limitata mentre un LinkedBlockingQueue viene chiamato una coda di blocco illimitata?
Code illimitate. L'utilizzo di una coda illimitata (ad esempio un valore LinkedBlockingQueue senza una capacità predefinita) causerà l'attesa di nuove attività nella coda quando tutti i thread corePoolSize sono occupati. Quindi, non verranno mai creati più di corePoolSize. (E il valore del maximumPoolSize pertanto non ha alcun effetto.)
così fa il Unbounded Queue
modifiche alle proprietà quando il LinkedBlockingQueue
ha una capacità definita?
E questo scritto per ArrayBlockingQueue
:
code delimitate. Una coda limitata (ad esempio, ArrayBlockingQueue) aiuta a prevenire l'esaurimento delle risorse quando viene utilizzata con un numero finito di MaximumPoolSizes, ma può essere più difficile da regolare e controllare. Coda le dimensioni e le dimensioni massime del pool possono essere scambiate l'una per l'altra: l'uso di code e piccoli pool di grandi dimensioni riduce al minimo l'utilizzo della CPU, le risorse del sistema operativo e il sovraccarico di commutazione del contesto , ma può comportare un throughput artificiosamente basso. . Se le attività si bloccano frequentemente (ad esempio se sono collegate I/O ), un sistema può essere in grado di pianificare il tempo per più thread di altrimenti consentito. L'utilizzo di code di piccole dimensioni richiede generalmente dimensioni di pool più grandi, che mantengono le CPU più occupate ma potrebbero verificarsi un sovraccarico di pianificazione inaccettabile, che riduce anche il throughput.
@Andrej Sì, sto confondendo ArrayList per Array. grazie per il chiarimento. A proposito di come cresce ArrayList quando è supportato da un array sottostante che non può crescere? – Geek
Quando è necessario ridimensionare, 'ArrayList' alloca una nuova matrice più grande e copia tutti gli elementi in quella nuova matrice. –