Sto lavorando su un tutorial per il mio corso di concorrenza Java. L'obiettivo è utilizzare i pool di thread per calcolare i numeri primi in parallelo.Aggiunta di thread in modo ricorrente a un pool di thread Java
Il design è basato sul setaccio di Eratostene. Ha una matrice di n bool, dove n è il numero intero più grande che stai controllando, e ogni elemento nella matrice rappresenta un intero. True è primo, false non è primo e l'array è inizialmente tutto vero.
Un pool di thread viene utilizzato con un numero fisso di thread (si suppone di sperimentare il numero di thread nel pool e osservare le prestazioni).
A thread viene assegnato un numero intero multiplo da elaborare. Il thread trova quindi il primo vero elemento nell'array che non è un multiplo del numero intero di thread. Il thread crea quindi un nuovo thread nel pool di thread a cui viene assegnato il numero trovato.
Dopo aver formato un nuovo thread, il thread esistente continua quindi a impostare su false tutti i multipli del suo intero nell'array.
Il thread del programma principale avvia il primo thread con il numero intero '2' e quindi attende che tutti i thread generati siano terminati. Quindi sputa fuori i numeri primi e il tempo impiegato per calcolare.
Il problema è che più thread ci sono nel pool di thread, più lento è il tempo impiegato da 1 thread. Dovrebbe essere sempre più veloce, non più lento!
Tutte le cose su Internet relative ai pool di thread Java creano n thread di lavoro il thread principale, quindi attendi che tutti i thread finiscano. Il metodo che utilizzo è ricorsivo in quanto un lavoratore può generare più thread di lavoro.
Mi piacerebbe sapere cosa non funziona e se i pool di thread Java possono essere utilizzati in modo ricorsivo.
Continuate con l'approccio Thread, questa è un'esperienza di apprendimento e quando avrete finito capirai molto sui thread. A chi importa del setaccio di Eratostene? Molti programmatori professionisti non comprendono mai la conoscenza di questa pagina. Basta ricordare che se una donna può avere un bambino in 9 mesi non significa che nove possa farlo un mese !!! –