Secondo Java Concurrency In Practice vi sono le seguenti svantaggi della creazione filo illimitata:
ai cicli di vita Discussione in testa
creazione dei thread e teardown non sono liberi. La creazione del thread richiede tempo e richiede alcune attività di elaborazione da parte della JVM e del sistema operativo.
consumo di risorse
le discussioni attive consumano risorse di sistema, in particolare la memoria. Quando ci sono più thread eseguibili rispetto ai processori disponibili, i thread rimangono inattivi. Avere molti thread inattivi può legare molta memoria, mettere pressione sul garbage collector e avere molti thread in competizione per le CPU può imporre anche altri costi di performance. Se hai abbastanza thread per mantenere occupate tutte le CPU, la creazione di più thread non aiuterà e potrebbe anche danneggiare.
Stabilità
C'è un limite al numero di thread può essere creato. Il limite varia a seconda della piattaforma ed è influenzato da fattori quali i parametri di chiamata JVM, la dimensione dello stack richiesta nel costruttore Thread e i limiti sui thread posizionati dal sistema operativo sottostante. Quando raggiungi il limite di htis, il risultato più probabile è un OutOfMemoryError. Cercare di recuperare da un tale errore è molto rischioso; è molto più semplice strutturare il programma per evitare di raggiungere questo limite.
Fino ad un certo punto, più thread possono migliorare la velocità, ma al di là di quel punto la creazione di più thread solo rallenta la vostra applicazione, e la creazione di un thread di troppo può causare l'intera applicazione in crash orribilmente. Il modo di stare fuori dal pericolo è mettere un po 'legato al numero di thread creati dall'applicazione e testare accuratamente l'applicazione per garantire che, anche quando viene raggiunto questo limite, non esaurisca le risorse.
La creazione di thread senza limiti potrebbe sembrare soddisfacente durante la prototipazione e lo sviluppo, con problemi che si verificano solo quando l'applicazione viene distribuita e sotto carico pesante.