我有一些实现Runnable接口的类。它们中的每一个都是通过单独的SingleThreadExecutor执行的。我无法修改执行例程,我可以为它提供不同的Runnable。
我需要根据其他Runnables结果对Runnables进行一些操作。即我想在run()方法中运行一些操作,以防所有其他Runnables到达该执行点。 或者,我想在run()方法中运行一些例程,只有当执行相同操作的Runnables的数量小于10时才会运行。
我看到的唯一解决方案是使静态变量CountDownLatch和Semaphore同步。
我实现了这个,但由于一些未知的原因,从一些Runnable SingleThreadExecutor开始,如果有些Runnables正在等待Latch或Semaphore,则不会使用下一个Runnable启动该线程。例如,7 Runnables开始,其他则没有。
我的问题:我在静态Latch或Semaphore上同步的方案是正确的吗?