Diciamo che "tipicamente" lo si usa per fare più task dello stesso tipo contemporaneamente. In generale ad un Executor vengono passati dei Runnable quindi l'Executor sa solo come lanciare il task ma non cosa faccia il task. Quindi che siano gli stessi tipi di task o diversi tipi di task all'Executor non importa.Originariamente inviato da mainetz
1) La thread pool serve per eseguire thread che fanno tutti le stesse operazioni("uguali") oppure per eseguire thread che hanno compiti diversi?
Il linea di massima sì. shutdown() però non è bloccante. Indica solo di iniziare il processo di shutdown in modo "gentile" (non vengono accettati nuovi task ma quelli già inviati verranno completati).Originariamente inviato da mainetz
2) E' corretto l'utilizzo sottostante?
È abbastanza tipico mettere subito dopo lo shutdown() un awaitTermination() per attendere in modo sincrono il completamento di tutti i task.