IntelliJ не может разрешить символ "newFixedThreadPool"

Я новичок в IntelliJ и Java в целом. Я пытаюсь научиться многопоточности, и я наткнулся на класс Executors.

Итак, я хотел проверить это, вот пример моего кода.

import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;


public class LegController {
    private List<Runnable> legs;
    private ExecutorService execute;

    public LegController() {
        legs = new ArrayList<>();
        for (int i = 0; i < 6; i++) {
            legs.add(LegFactory.getLeg("LEFT"));
        }

        execute = new Executors.newFixedThreadPool(6);
    }

    public void start(){

        //TODO
    }
}

Но я получаю сообщение об ошибке: "Не удается разрешить символ" newFixedThreadPool "". Я попробовал "Invalidate cache and restart", но это не помогло, я попытался синхронизировать и перестроить проект, но он тоже не сработал.

Я не понимаю, откуда эта проблема, потому что импортируется класс Executors. Кроме того, было автозаполнение для статических методов Исполнителей. Может быть, проблема в импорте, но если так, как я могу это исправить?

2 ответа

Решение

Удалить ключевое слово new в этой строке:

execute = new Executors.newFixedThreadPool(6);

Так должно быть:

execute = Executors.newFixedThreadPool(6);

Метод newFixedThreadPool статический метод класса Executors,

Удалите новое ключевое слово из этой строки:

execute = Executors.newFixedThreadPool(6);

Ваш синтаксис на самом деле пытается вызвать конструктор статического внутреннего класса 'newFixedThreadPool' внутри класса Executor. Этот статический внутренний класс не существует. Вместо этого вы должны вызвать статический метод фабрики...

Другие вопросы по тегам