Tarefa de Multithreading
Tarefa
É necessário implementar a lógica para criar 100 threads, cada uma das quais irá calcular o fatorial do índice em um loop e salvar o resultado no array results.
Também é necessário aguardar todas as threads finalizarem antes de exibir os resultados. (método join() )
Não altere nada além do método calculateFactorialsInParallel()
Os métodos factorial(), printMassive(), getResults() já estão prontos e não precisam ser modificados
factorial(Integer) - calcula o fatorial do número passado como parâmetro;
printMassive(BigInteger[]) - imprime o array de resultados no console;
getResults() - retorna o array de resultados (utilizado para testes);
SIZE_MASSIVE - constante para definir o tamanho do array (NÃO ALTERAR);
results[] - array para armazenar os resultados.
Após concluir a tarefa, acesse src/test/java/TaskThreadTest.java e execute-a
Deve haver apenas um teste para ser aprovado na primeira execução
Quando a tarefa for realizada corretamente, todos os testes devem ser aprovados; se algum teste não for aprovado, então o método calculateFactorialsInParallel() foi implementado incorretamente ou foram alterados campos/métodos que não podem ser modificados
Plano de Implementação
-
Criar um array de threads: Configurar um array de objetos
Thread, onde cada elemento corresponde a uma thread diferente. O tamanho do array deve corresponder ao array que está sendo processado (SIZE_MASSIVE = 100). -
Inicializar cada thread: Em um laço que percorre cada elemento do array, criar uma nova thread. Dentro dessa thread, executar a tarefa necessária (calcular o fatorial do índice). Armazenar o resultado no array de resultados.
-
Iniciar as threads: Após criar cada thread, iniciá-la chamando o método
start(). -
Aguardar todas as threads finalizarem: Depois de iniciar todas as threads, utilizar o método
join()em cada thread para garantir que a thread principal do programa aguarde até que todas as threads terminem. Isso assegura que todos os cálculos estejam completos antes que a thread principal do programa prossiga.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Incrível!
Completion taxa melhorada para 3.33
Tarefa de Multithreading
Deslize para mostrar o menu
Tarefa
É necessário implementar a lógica para criar 100 threads, cada uma das quais irá calcular o fatorial do índice em um loop e salvar o resultado no array results.
Também é necessário aguardar todas as threads finalizarem antes de exibir os resultados. (método join() )
Não altere nada além do método calculateFactorialsInParallel()
Os métodos factorial(), printMassive(), getResults() já estão prontos e não precisam ser modificados
factorial(Integer) - calcula o fatorial do número passado como parâmetro;
printMassive(BigInteger[]) - imprime o array de resultados no console;
getResults() - retorna o array de resultados (utilizado para testes);
SIZE_MASSIVE - constante para definir o tamanho do array (NÃO ALTERAR);
results[] - array para armazenar os resultados.
Após concluir a tarefa, acesse src/test/java/TaskThreadTest.java e execute-a
Deve haver apenas um teste para ser aprovado na primeira execução
Quando a tarefa for realizada corretamente, todos os testes devem ser aprovados; se algum teste não for aprovado, então o método calculateFactorialsInParallel() foi implementado incorretamente ou foram alterados campos/métodos que não podem ser modificados
Plano de Implementação
-
Criar um array de threads: Configurar um array de objetos
Thread, onde cada elemento corresponde a uma thread diferente. O tamanho do array deve corresponder ao array que está sendo processado (SIZE_MASSIVE = 100). -
Inicializar cada thread: Em um laço que percorre cada elemento do array, criar uma nova thread. Dentro dessa thread, executar a tarefa necessária (calcular o fatorial do índice). Armazenar o resultado no array de resultados.
-
Iniciar as threads: Após criar cada thread, iniciá-la chamando o método
start(). -
Aguardar todas as threads finalizarem: Depois de iniciar todas as threads, utilizar o método
join()em cada thread para garantir que a thread principal do programa aguarde até que todas as threads terminem. Isso assegura que todos os cálculos estejam completos antes que a thread principal do programa prossiga.
Obrigado pelo seu feedback!