SlaveThread 개체 목록을 유지하는 마스터가 있다고 가정합니다. 매 시간 단계마다 마스터가 슬레이브 스레드를 병렬로 실행하기를 원하지만, 타임 스텝이 끝날 때 슬레이브 스레드가 앞으로 나아갈 때까지 현재 시간 간격을 완료하기를 기다리 길 원합니다. 또한 각 시간 단계마다 SlaveThreads를 다시 설치하기를 원하지 않습니다. 두 가지 가능한 솔루션을 가지고 있으며 둘 중 하나를 작동시키는 방법을 모르겠습니다.Java - 시간 단계별 다중 스레드 동기화
1) SlaveThread의 run() 메서드는 while (true) 루프에 있습니다. SlaveThread의 단일 루프의 실행 후, 내가해야 SlaveThread은 (내가하는 방법을 모른다) 마스터에게 통지하고, 주인은 전에
try{
for (int i = 0; i < numSlaveThreads; i++) {
while (!slaveThreads[i].getCompletedThisIter()) {
wait()
}
}
System.out.println("Joined");
같은}
을한다 다음 단계로 나아 간다. 어떻게하면 좋을까요? 단일 SlaveThread에서 마스터에게 어떻게 알릴 수 있습니까?
2) Slave의 run()이 while (true) 루프가 아니므로 모든 반복에서 start()를 호출해야합니다. 그러나이 시점에서 슬레이브의 스레드 상태는 종료됩니다. 어떻게 다시 시작하지 않고 start()를 호출 할 수 있습니까?
환상적인 장벽을 원하는 것처럼 들리겠습니다. http://docs.oracle.com/javase/7/docs/api /java/util/concurrent/CyclicBarrier.html (변형 1 사용) – millimoose