1
resposta

[Bug] ExecutorService não compila

Na aula "02 Simulando uma aplicação com muitas threads" não consigo compilar o try with resources.

Erro: Required type: AutoCloseable Provided: ExecutorService

ou ainda: Incompatible types. Found: 'java.util.concurrent.ExecutorService', required: 'java.lang.AutoCloseable'

Minha classe completa:

package br.com.alura;

import java.time.Duration;
import java.time.Instant;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TesteMultiplasThreads {

    public static void main(String[] args) {

        ExecutorService executor = Executors.newFixedThreadPool( 10000);

        Instant inicio = Instant.now();

        try (ExecutorService e = executor){
            for (int i = 1; i<=10000; i++){
                var tarefa = new ExecutaTarefa();
                e.execute(tarefa);
            }
        }

        Instant fim = Instant.now();

        Duration duracao = Duration.between(inicio, fim);
        System.out.println("Tempo gasto pelas tarefas: " + duracao);
    }
}
C:\>java --version
java 21.0.3 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 21.0.3+7-LTS-152)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.3+7-LTS-152, mixed mode, sharing)
1 resposta

Oi Cleyton! Tudo bem?

O ExecutorService passou a implementar a interface AutoCloseable a partir da versão 19 do Java, então pode ser que você esteja executando seu código em alguma versão anterior no Intellij, mesmo tendo o Java 21 instalado. Para conferir a versão que está sendo utilizada no Intellij para executar o código, você pode ir em File > Project Structure e verificar a SDK:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

No meu caso, por exemplo, aparece esse 21 - Oracle OpenJDK. Pode ser que apareça Java 17 pra você, e por isso esteja dando erro.

Espero ter ajudado! Abraços e bons estudos!