Runnable 인터페이스를 구현하는 클래스가 있습니다. 각각은 별도의 SingleThreadExecutor를 통해 실행됩니다. 나는 실행 루틴을 수정할 수 없다. 단지 다른 Runnable을 제공 할 수있다.정적 래치 또는 세마포어를 사용해도 되나요?
다른 Runnables 결과에 따라 Runnables로 일부 작업을 수행해야합니다. 나는. 다른 모든 Runnable이 해당 실행 지점에 도달 한 경우에만 run() 메서드 내에서 일부 작업을 실행하려고합니다. 또는 동일한 작업을 수행하는 Runnables의 수가 10 개 미만인 경우에만 run() 메서드 내에서 루틴을 실행하고 싶습니다.
유일한 해결책은 정적 변수 CountDownLatch 및 Semaphore를 다음과 같이 만드는 것입니다. 에 동기화하십시오.
이 기능을 구현했지만 일부 알 수없는 이유로 시작하는 Runnable SingleThreadExecutor는 일부 Runnable이 래치 또는 세마포를 기다리고있는 경우 다음 Runnable과 함께 스레드를 시작하지 않습니다. 예를 들어 7 Runnables start, 다른 Runnables는 시작하지 않습니다.
내 질문 : 올바른 래치 또는 세마포어 동기화에 대한 나의 계획은 무엇입니까?
당신이하는 일은 일할 수 있습니다 - 왜 어떤 코드를 보지 않고서는 말하기 어렵습니다. – assylias