Olá, preciso fazer um programa em java que some os 1.000.000 primeiros usando threads.Porém em meu programa cada vez que eu rodo ele dá um resultado diferente.
no construtor vc estarta a Thread e depois no main vc está estartando novamente
R
Railgun
Ops , nem tinha reparado. Deixei somente a do main porém vejo que está somando várias vezes a mesma sequência de números ,por exemplo de 100.000 a 200.000 mas o resultado pelo menos não está mais mutável. Como resolver isso ?
Rodrigo_Sasaki
Se você testa com uma única thread. os resultados saem como você espera em repetidas execuções?
Rodrigo_Sasaki
Reparei agora que você está chamando o join na própria classe Calcular.
O método join tem que ser chamado para bloquear até que outra thread finalize sua execução. Portanto você tem que chamar o join na sua main thread
Rodrigo_Sasaki
Caso te ajude eu resolvi implementar esse problema por diversão. Ele divide o número total em partes iguais. E o número de partes é o número de threads disponíveis na sua máquina:
Então , eu só quero que some tudo e dê o resultado certinho. Fiquei confusa sobre o join , eu posso pegar tudo que está em volta dele e colocar no main também ? ou vou ter que criar do 0?
Rodrigo_Sasaki
Você só tem que chamar o join na mesma thread que deu o start. Exemplo: