1. ホーム
  2. java

ExecutorService (具体的には ThreadPoolExecutor) はスレッドセーフですか?

2023-09-09 03:18:17

質問

この場合 ExecutorService はスレッドセーフを保証しますか?

異なるスレッドから同じThreadPoolExecutorにジョブを投入する予定ですが、タスクのやり取りや投入の前に、executorへのアクセスを同期させる必要がありますか?

どのように解決するのですか?

確かに、問題の JDK クラスは、スレッドセーフなタスク投入を明示的に保証していないようです。 しかし、実際には、ライブラリ内のすべての ExecutorService 実装は、この方法で確かにスレッドセーフです。 これに依存するのは合理的だと思います。 これらの機能を実装したコードはすべてパブリックドメインに置かれたので、誰かが完全に別の方法で書き直す動機はまったくありません。