2012-01-06 4 views
5

사이 ExecutorService를 지연 나는 수면 방법을 사용하여 스레드를 지연시키는 전통적인 방법을 알고있다. 내 질문에 내가 다음과 같은 한 가정입니다 :Java 스레드 : 스레드

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

수면 방법을 사용하지 않고 각 스레드 사이에 지연을 가지고 ExecutorService를 클래스를 사용하여 말하는 방법이 있나요? 이 목적을 위해 ExecutorService 클래스에 메서드가 있습니까?

+2

가 Whjat는 "각 스레드 사이의 지연"에 의해 의미합니까 할 수

ScheduledExecutorService service = Executors.newScheduledThreadPool(5); service.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); 

당신이 세 가지 작업을하려면 같은 것을 의미합니까? 제출 된 각 과제의 제출 간격을 지연합니까? – skaffman

+0

지연 사유를 말씀해 주시겠습니까? 대부분의 경우 Runnables/Futures는 일종의 차단을 사용합니다. 또한 sleep()을 사용하기에 적합하지 않은 기능은 무엇입니까? –

+0

클래스 설명서에 아무것도 나와 있지 않습니다. http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max

답변

9

당신은 10 초 간격이

service.execute(task1); 
service.schedule(task2, 10, TimeUnit.SECONDS); 
service.schedule(task3, 20, TimeUnit.SECONDS); 
+0

위의 내용은 특정 작업에 주기적으로 지연이 발생할 것이라고 생각합니다. 동일한 작업이 주기적으로 실행된다는 것을 의미합니다. 내가 원하는 실행 가능으로 obj1가 제출 된 10 초 후에 실행 예 태스크 1 (실행 가능한 OBJ1) 처음 실행 및 작업 2 (실행 가능한 obj2보다) 시작을위한 작업 사이에 지연이다. ExecutorService 또는 일부 정렬을 사용하여이 작업을 수행 할 수 있는지 궁금합니다. – yapkm01

+0

사용자의 의견을 기반으로 업데이트했습니다. –