나는 할 수있는 몇 가지 개발이있어, 나는 사용할 패턴이 있는지 알아 내려고 노력하고있다. 문제는 간단합니다 :자바 스레드 : 생산자 - 소비자
나는 많은 밟기를 시작하는 메인 스레드를 가지고 있습니다. 주 스레드는 각 스레드가 완료 될 때까지 기다린 다음 다른 작업을 수행해야합니다. 기존 코드가 약간 엉망입니다. 당신이 보는대로
//launch threads
.....
//wait for threads to finish
while (ThreadRepository.getInstance().isActiveThreadGroup(myGroupId)) {
Thread.sleep(5000);
}
//doing something else
그래서, while 루프는 어떤 쓰레드가 실행하지 않을 때까지 계속 실행 : 나는 뭔가 실행되고 있는지 확인하기 위해 스레드 그룹을 확인 while 루프가 있습니다. 거기에 뭔가를
예를 들어 일부 BlockingQueue를 사용하고, 각 스레드 넣어 (또는 소요) : 나는 패턴 생산자 - 소비자에 생각 나는 그런 일을하고 싶은
. 대신에 잠을자는 대신에 myQueue.take()
과 같은 것이 있지만 대기열이 비어있을 때까지 기다리는 것이 좋습니다. 비어있는 경우 실행중인 스레드가 없음을 의미합니다.
인터넷에서 검색하려고하지만 내 문제와 일치하는 것을 찾지 못했습니다.
누구든지 내 문제를 해결하는 데 가장 효율적인 방법을 알고 있습니까?
thead의 개수가 미리 결정된 경우 'CountDownLatch'를 사용할 수 있습니다. –
Marko, "기여자들의 호의를 돌려주지 않고"당신은 무엇을 의미합니까? –