Java Concurrency APIは、ビルドするためExecutor
のExecutorService
インターフェースを提供し、いくつかの具体的な実装(ThreadPoolExecutor
およびScheduledThreadPoolExecutor
)とともに出荷されます。
私はJava並行性にまったく慣れておらず、非常によく似たいくつかの質問に対する答えを見つけるのに苦労しています。これらすべての小さな質問でSOを乱雑にするのではなく、私はそれらをまとめることにしました。おそらく、それらすべてに一挙に答える方法があるからです(おそらく、ここで全体像を見ていないためです)。
Executor
独自の/を実装するのが一般的な方法ExecutorService
ですか?上記の2つのコンクリーションを使用する代わりに、どのような場合にこれを行いますか?どのような場合に、2つのコンクリーションは「自家製」のものよりも好ましいですか?- すべての同時コレクションがにどのように関連しているかわかりません
Executor
。たとえば、送信されたタスクをキューに入れるためThreadPoolExecutor
に、たとえば、内部で使用しますか?ConcurrentLinkedQueue
それとも、あなた(API開発者)は、たとえばConcurrentLinkedQueue
並列化されたrun()
メソッド内で選択して使用することになっていますか?基本的に、sが内部で使用する並行コレクションはありExecutor
ますか、それとも非ブロッキングアルゴリズムの作成を支援するためにそれらを使用しますか? Executor
(送信されたタスクを格納するために)内部で使用する同時コレクションを構成できますか?これは一般的な方法ですか?
前もって感謝します!