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 がインポートされているため、この問題の原因がわかりません。さらに、Executor の静的メソッドにはオートコンプリートがありました。インポートに問題があるのか​​もしれませんが、もしそうなら、どうすれば修正できますか?

4

2 に答える 2

25

new次の行のキーワードを削除します。

execute = new Executors.newFixedThreadPool(6);

そのはず:

execute = Executors.newFixedThreadPool(6);

メソッドnewFixedThreadPoolは class の静的メソッドですExecutors

于 2016-12-09T13:26:30.290 に答える
1

次の行から新しいキーワードを削除します。

execute = Executors.newFixedThreadPool(6);

あなたの構文は、実際には Executor クラス内の静的内部クラス 'newFixedThreadPool' のコンストラクターを呼び出そうとします。その静的内部クラスは存在しません。代わりに、静的ファクトリ メソッドを呼び出す必要があります...

于 2016-12-09T13:28:06.640 に答える