A mio avviso, è l'architettura generale dell'applicazione ad essere sbagliata.
Ciascun thread svolge, in modo asincrono, una o più operazioni, e ovviamente durante il processo non può farsi carico di nuove richieste di elaborazione.
Nel caso in esame, vengono creati n thread, ma alla fine il loro lavoro - se ho capito bene - è stato demandato ad un unico thread, che li gestisce, ed è quest'ultimo a svolgere le operazioni richieste, non i singoli thread.
Se le operazioni di gestione di ciascun terminale devono essere svolte allo stesso tempo, allora tali operazioni vanno delegate a thread separati; la classe "unificatrice", tutt'al più, può fornire funzionalità di gestione complessive, ad esempio intimando ai singoli thread di terminare oppure restituendo informazioni sullo stato dei lavori, ma non può farsi carico del lavoro stesso dei singoli thread, e se lo fa chiaramente potrà elaborarne solo uno alla volta, da qui l'inutilità di avere thread separati.
Ciao!![]()

Rispondi quotando