comecei as aulas sobre thread, porém estou um pouco confuso, e não estou conseguindo implementar uma forma de fazer um calculo de n termos (no exercicio está pedindo 1.000.000 mas estou querendo deixar dinamico para facilitar nos testes e apenas na versão final deixar a quantidade de termos solicitado), podendo definir se quero usar 1, 2, 4 ou 8 threads.
Pegue a quantidade de termos e divida pela quantidade de Threads que você quer usar.
Assim saberá quantos termos cada uma terá de processar.
R
rodrigoaraujo1709
Oi bom dia staroski, essa ideia eu até tive, mas não consegui implementar. Alguém pode me mostrar como ficaria com o código?
Att.,
staroski
importjava.io.PrintStream;importjava.util.Scanner;publicclassPrograma{publicstaticvoidmain(String[]args){try{Programaprograma=newPrograma();programa.executar();}catch(Throwablet){t.printStackTrace();}}privatefinalScannerentrada=newScanner(System.in);privatefinalPrintStreamsaida=System.out;publicvoidexecutar()throwsException{saida.print("Quantidade de termos: ");intqtdTermos=Integer.parseInt(entrada.nextLine());saida.print("Quantidade de threads: ");intqtdThreads=Integer.parseInt(entrada.nextLine());// criar as threadsThread[]threads=criarThreads(qtdThreads,qtdTermos);// disparar as threadsfor(Threadthread:threads){thread.start();}// esperar que as threads terminemfor(Threadthread:threads){thread.join();}}privateThread[]criarThreads(intqtdThreads,intqtdTermos){inttermosPorThread=qtdTermos/qtdThreads;Thread[]threads=newThread[qtdThreads];intnumero=1;for(intthread=0;thread<qtdThreads;thread++){int[]termos=newint[termosPorThread];for(inti=0;i<termosPorThread;i++){termos[i]=numero;numero++;}threads[thread]=newThread(()->somarTermos(termos),"Thread "+thread);}returnthreads;}privatevoidsomarTermos(int[]termos){StringBuildertexto=newStringBuilder();intsoma=0;for(inttermo:termos){if(texto.length()>0){texto.append(" + ");}texto.append(termo);soma+=termo;Thread.yield();}texto.append(" = ").append(soma);saida.println(Thread.currentThread().getName()+": "+texto);}}