ThreadPoolExecutor
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory)
ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory, RejectedExecutionHandler handler)
Executors.callable(PrivilegedAction<?> action)
Executors.callable(PrivilegedExceptionAction<?> action)
Executors.callable(Runnable task)
Executors.callable(Runnable task, T result)
Executors.defaultThreadFactory()
Executors.newCachedThreadPool()
Executors.newCachedThreadPool(ThreadFactory threadFactory)
Executors.newFixedThreadPool(int nThreads)
Executors.newFixedThreadPool(int nThreads, ThreadFactory threadFactory)
Executors.newScheduledThreadPool(int corePoolSize)
Executors.newScheduledThreadPool(int corePoolSize, ThreadFactory threadFactory)
Executors.newSingleThreadExecutor()
Executors.newSingleThreadExecutor(ThreadFactory threadFactory)
パラメータ | 詳細 |
---|---|
corePoolSize | プールに保持するスレッドの最小数。 |
maximumPoolSize | プール内で許可されるスレッドの最大数。 |
keepAliveTime | スレッドの数がコアより大きい場合、コア以外のスレッド(超過アイドルスレッド)は、このパラメータによって定義された時間が新しいタスクのために終了してから終了します。 |
単位 | keepAliveTime 時間単位。 |
タイムアウト | 待機する最大時間 |
workQueue | Executorが使用するキューのタイプ |
threadFactory | 新しいスレッドを作成するときに使用するファクトリ |
nThreads | プール内のスレッド数 |
エグゼクティブ | 基礎となる実装 |
仕事 | 実行するタスク |
結果 | 返す結果 |
アクション | 実行する特権アクション |
呼び出し可能な | 基本的なタスク |
以下に説明するさまざまな種類のThreadpoolsとQueueは、[oracle documentation] [1]と[Jakob Jenkov] [2]の情報と知識から得られたもので、Javaの並行性について多くのことを学ぶことができます。
SingleThreadExecutor:アンバウンドキューで動作する単一のワーカースレッドを使用し、必要なときに提供されたThreadFactoryを使用して新しいスレッドを作成するExecutor。その他の同等のnewFixedThreadPool(1、threadFactory)とは異なり、返されたexecutorは、追加スレッドを使用するように再構成できないことが保証されています。
FixedThreadPool:提供されたThreadFactoryを使用して、必要に応じて新しいスレッドを作成する、固定の数のスレッドを共有の無制限キューから再利用するスレッドプール。どの時点でも、たいていのnThreadsスレッドはアクティブな処理タスクになります。すべてのスレッドがアクティブなときに追加のタスクがサブミットされると、スレッドが使用可能になるまでキュー内で待機します。シャットダウン前に実行中にエラーが発生してスレッドが終了した場合、必要に応じて後続のタスクを実行するために新しいスレッドが使用されます。プール内のスレッドは、明示的にシャットダウンするまで存在します。
CachedThreadPool:必要に応じて新しいスレッドを作成するが、以前に構築されたスレッドが利用可能な場合にそれらを再利用し、必要に応じて提供されたThreadFactoryを使用して新しいスレッドを作成するスレッドプール。
SingleThreadScheduledExecutor:指定された遅延の後に実行するコマンド、または定期的に実行するコマンドをスケジュールできるシングルスレッドエグゼキュータです。ただし、シャットダウン前の実行中に失敗したためにこの単一のスレッドが終了した場合、後続のタスクを実行するために必要に応じて新しいスレッドが使用されます)。タスクは順次実行されることが保証され、いつでもその他の同等のnewScheduledThreadPool(1、threadFactory)とは異なり、返されたexecutorは、追加スレッドを使用するように再構成できないことが保証されています。
ScheduledThreadPool:指定された遅延の後に実行するコマンド、または定期的に実行するコマンドをスケジュールできるスレッドプール。さまざまなタイプの作業キュー