Runnable インターフェイスを実装するクラスがいくつかあります。それらのそれぞれは、個別の SingleThreadExecutor を介して実行されます。実行ルーチンを変更することはできません。別の Runnables を提供することしかできません。
他の Runnables の結果に応じて、Runnables でいくつかの操作を行う必要があります。つまり、他のすべてのランナブルがその実行ポイントに達した場合にのみ、run() メソッド内で何らかの操作を実行したいと考えています。または、同じことをしている Runnables の数が 10 未満の場合にのみ、run() メソッド内でいくつかのルーチンを実行したいと考えています。
私が見る唯一の解決策は、静的変数 CountDownLatch と Semaphore を同期させることです。
私はこれを実装しましたが、不明な理由で、いくつかのランナブルがラッチまたはセマフォを待っている場合、いくつかのランナブルから始めて、SingleThreadExecutor は次のランナブルでスレッドを開始しません。たとえば、7 つの Runnables は開始しますが、他のものは開始しません。
私の質問: 静的ラッチまたはセマフォで同期する私のスキームは正しいものですか?