Ajuda com Threads em Java

Boa tarde pessoal, eu estou com um problema ao tentar paralelizar um procedimento aqui.

O meu código é esse:

Thread[] th = new Thread[numThreads];
		
		for(int l = 0; l < numThreads; l++){
			ThreadLoss tl = new ThreadLoss(args, this.trainData, l, it, this);
			th[l] = new Thread(tl);
			th[l].start();
		}

Esse procedimento eu uso para aguardar as threads serem executadas

		for(int i = 0; i < th.length; i++){
			
			try{
			  th[i].join();
			}
			catch(InterruptedException ie){
				ie.printStackTrace();
			}
		}

O problema é que com esse procedimento demora tanto que nem compesa usar Threads para resolver o problema. Alguém poderia me dar uma luz e dizer o que tem de errado com minha implementação?

Att

Cara, para entender o que está acontecendo você teria que postar o que a sua classe ThreadLoss está fazendo. Mas uma coisa já posso te adiantar: se dentro do código concorrente você tem muito acesso a estado compartilhado e precisa de muitos blocos synchonized dentro dele, todo o benefício da execução paralela é perdida, pois você começa a enfileirar as suas threads. Se você quer tirar benefício da paralelização, o ideal é que você faça o particionamento dos dados antes de iniciar as threads e evitar compartilhar estado entre elas.

1 curtida