0

ExecutorService のオブジェクトを使わずに作成したい

newSingleThreadExecutor(),

Executors.newFixedThreadPool()

と、

Executors.newScheduledThreadPool()

どのようにそれを行うのですか?ExecutorService を使用するのはこれが初めてで、「スレッド数」を定義せずにインスタンス化する方法を見つけるために多くのことを調べましたが、失敗しました。

4

2 に答える 2

3

ファクトリ メソッドの大部分は、 ThreadPoolExecutorjava.util.concurrent.Executorsのインスタンスまたはその子ScheduledThreadPoolExecutorを返します。ExecutorServiceのjavadoc を確認すると、これらがよく知られた実装であることがわかります。

java.util.concurrent.ExecutorsExecutors.newCachedThreadPool()のソースコードを見ると、あなたの呼び出しを避けることができます:

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                              60L, TimeUnit.SECONDS,
                              new SynchronousQueue<Runnable>());
}
于 2013-03-18T08:14:57.003 に答える
0

なぜファクトリメソッドを使いたくないのでしょうか?

このファクトリ メソッドが (既に) 行っているように Executor オブジェクトを作成すると、独自にオブジェクトを簡単に作成できます。

public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue<Runnable>());
}
于 2013-03-18T08:13:06.543 に答える