【问题标题】:IntelliJ cannot resolve symbol "newFixedThreadPool" [duplicate]IntelliJ 无法解析符号“newFixedThreadPool” [重复]
【发布时间】:2017-04-24 23:54:54
【问题描述】:

总的来说,我是 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 的静态方法有自动补全功能。 也许进口有问题,但如果是这样,我该如何解决?

【问题讨论】:

  • 我猜你想要execute = Executors.newFixedThreadPool(6);,即没有new 关键字,这使得编译器期望构造函数调用(并且不调用构造函数)。
  • 也没有 Executors.newSingleThreadExecutor(int) 方法。

标签: java intellij-idea cannot-find-symbol


【解决方案1】:

从此行中删除新关键字:

execute = Executors.newFixedThreadPool(6);

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

【讨论】:

    【解决方案2】:

    删除此行中的关键字new

    execute = new Executors.newFixedThreadPool(6);
    

    应该是:

    execute = Executors.newFixedThreadPool(6);
    

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

    【讨论】:

    • 非常感谢,事实上我确实把关键字 new 放在了 reflex 上,因此没有注意到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-23
    • 2019-02-21
    相关资源
    最近更新 更多