2012-09-17 3 views
2

다음은 내가 원하는 작업입니다.Java 동시성 설계

언제나 많은 스레드가 시작되며 각 스레드는 약 5 초 실행됩니다. 하나의 스레드가 실행 중이면 다른 스레드가 대기해야합니다. 그리고 실행중인 쓰레드가 끝나면 최신 쓰레드가 실행되기 시작하고 다른 대기중인 쓰레드는 멈춘다. 물론, 하나의 스레드가 시작될 때 다른 스레드가없는 상황이 있습니다.

FutureTask를 사용하려고했지만 실패했습니다. 나에게는 너무 복잡해 보입니다. 누구든지 내게 어떤 생각을 줄 수 있습니까?

+5

순차적으로 작업을 실행하려면 스레드가 필요합니까? –

+0

작업 스택을 유지하고 항상 최신 스레드를 선택하고 단일 스레드로 실행하십시오. –

+5

"하나의 스레드가 실행 중일 때 다른 스레드는 대기해야합니다"- 주어진 시간에 하나의 스레드 만 실행되므로 아무런 동시성이 없습니다. 스레드를 사용하는 것은 의미가 없습니다. FIFO 대기열을 만들고 다른 작업을 차례로 실행하십시오. 쓰레드는 병렬로 * 작업을 실행하기위한 것입니다. – m0skit0

답변

5

작업 큐에서 작업을 가져 와서 순차적으로 호출하는 single-threaded executor을 살펴볼 수 있습니다.

나중에 동시성을 추가하기로 결정한 경우이 클래스를 사용하는 것이 더 편리합니다.

+0

예, 단일 스레드 실행 프로그램을 사용해야합니다. 그리고 다른 논리를 추가하십시오. –