8

一般来说,我是 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’”。我尝试了“使缓存无效并重新启动”,但它没有帮助,我尝试同步和重建项目,但它也没有工作。

我不明白这个问题来自哪里,因为导入了 Executors 类。此外,Executors 的静态方法有自动补全功能。也许进口有问题,但如果是这样,我该如何解决?

4

2 回答 2

25

删除new此行中的关键字:

execute = new Executors.newFixedThreadPool(6);

它应该是:

execute = Executors.newFixedThreadPool(6);

该方法newFixedThreadPool是类的静态方法Executors

于 2016-12-09T13:26:30.290 回答
1

从此行中删除 new 关键字:

execute = Executors.newFixedThreadPool(6);

您的语法实际上尝试在 Executor 类中调用静态内部类“newFixedThreadPool”的构造函数。该静态内部类不存在。相反,您必须调用静态工厂方法...

于 2016-12-09T13:28:06.640 回答