ExecutorService のオブジェクトを使わずに作成したい
newSingleThreadExecutor(),
Executors.newFixedThreadPool()
と、
Executors.newScheduledThreadPool()
どのようにそれを行うのですか?ExecutorService を使用するのはこれが初めてで、「スレッド数」を定義せずにインスタンス化する方法を見つけるために多くのことを調べましたが、失敗しました。
ExecutorService のオブジェクトを使わずに作成したい
newSingleThreadExecutor(),
Executors.newFixedThreadPool()
と、
Executors.newScheduledThreadPool()
どのようにそれを行うのですか?ExecutorService を使用するのはこれが初めてで、「スレッド数」を定義せずにインスタンス化する方法を見つけるために多くのことを調べましたが、失敗しました。
ファクトリ メソッドの大部分は、 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>());
}
なぜファクトリメソッドを使いたくないのでしょうか?
このファクトリ メソッドが (既に) 行っているように Executor オブジェクトを作成すると、独自にオブジェクトを簡単に作成できます。
public static ExecutorService newCachedThreadPool() {
    return new ThreadPoolExecutor(0, Integer.MAX_VALUE,
                                  60L, TimeUnit.SECONDS,
                                  new SynchronousQueue<Runnable>());
}