1
resposta

O que é Thread?

Link do projeto no github: https://github.com/EncodeDecodeStepByStep/EncodeDecodeStepByStep/blob/master/backend/src/main/java/br/unisinos/encodedecodestepbystep/controller/GoulombController.java

Código:

public class GoulombController implements CodificationController {

    private final GoulombService goulombService;

    @CrossOrigin("http://localhost:3000")
    @PostMapping("/normal/encode")
    @ResponseStatus(HttpStatus.OK)  
    public void encode(@RequestBody EncodeRequest encodeRequest) {
        goulombService.setDivisor(encodeRequest.getDivisor());
        Codification.setStepsFinished(false);
        Codification.setEncodeCodification(true);
        new Thread(() -> {
            try {
                Codification.setProgressPercentage(new MutableDouble(0));

                ReaderWriterWrapper readerWriterWrapper = ReaderWriterWrapper.getEncodeReaderWriterWrapperNormal(encodeRequest.getPath(), Codification.getProgressPercentage());
                goulombService.encode(readerWriterWrapper.getWriterInterface(), readerWriterWrapper.getReaderInterface());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();
    }

1)O que é a Thread?
2)Em cada requisição é criada uma Thread automaticamente?
3)Para que serve colocar essa "Thread"? Não tinha a Thread do usuário já?
4)Quando acaba a Thread do usuário criada automaticamente e começa essa Thread criada manualmente? Ou são executadas juntas? Qual a função da Thread criada automáticamente e essa criada manualmente?

1 resposta

Olá, Luidi! Como vai?

Vamos lá, vou esclarecer suas dúvidas sobre Threads:

  1. O que é a Thread? uma Thread, em termos de programação, é a menor unidade de processamento que pode ser realizada em um programa. Em outras palavras, é uma sequência de comandos que pode ser executada de forma independente. Em Java, você pode criar Threads para executar tarefas em paralelo, o que é útil para melhorar a eficiência e a capacidade de resposta de um aplicativo.

  2. Em cada requisição é criada uma Thread automaticamente? sim, em um servidor web, como o Spring Boot, cada requisição HTTP geralmente é tratada por uma Thread separada. Isso permite que o servidor lide com múltiplas requisições simultaneamente.

  3. Para que serve colocar essa "Thread"? Não tinha a Thread do usuário já? a Thread do usuário (ou principal) é aquela que lida com a requisição HTTP inicial. No seu código, você está criando uma nova Thread manualmente para executar a tarefa de codificação de forma assíncrona. Isso significa que a tarefa de codificação será realizada em paralelo, permitindo que a Thread principal continue a processar outras requisições sem ter que esperar a codificação terminar.

  4. Quando acaba a Thread do usuário criada automaticamente e começa essa Thread criada manualmente? Ou são executadas juntas? Qual a função da Thread criada automaticamente e essa criada manualmente?

    A Thread criada automaticamente (a Thread principal) começa a executar quando a requisição HTTP é recebida. Quando você cria uma nova Thread manualmente, como no seu código, essa nova Thread começa a executar assim que o método start() é chamado.

    Elas são executadas juntas, mas de forma independente. A Thread principal continua a lidar com a requisição HTTP, enquanto a Thread manualmente criada lida com a tarefa específica de codificação. Isso permite que o servidor continue a responder a outras requisições enquanto a codificação está em andamento.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.