2012-01-06 146 views
5

我知道使用睡眠方法延遲線程的傳統方式。我的問題是所謂我有以下幾點:Java線程:線程之間的執行程序服務延遲

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

有沒有辦法使用的ExecutorService類,以便在不使用的睡眠方法,每個線程之間的延遲說呢?我的意思是在這個目的下有一個ExecutorService類的方法嗎?

+2

Whjat你的意思是「每個線程之間的延遲」?你在每個提交的任務的執行之間拖延了嗎? – skaffman 2012-01-06 15:27:18

+0

你能否說出延遲的原因?大多數情況下,您會讓Runnables/Futures使用某種阻塞。此外,您需要哪些功能使sleep()不適合使用? – 2012-01-06 15:28:16

+0

類文檔沒有列出任何內容。 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max 2012-01-06 15:29:30

回答

9

你的意思是這樣

ScheduledExecutorService service = Executors.newScheduledThreadPool(5); 

service.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.MILLISECONDS); 

如果你想三個任務10秒分開,你可以做

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

我認爲上述情況會導致某個特定任務的週期性延遲 - 這意味着相同的任務會在一個週期性的時間段內運行。我想要的是任務之間的延遲,例如任務1(runnable obj1)首先運行,任務2(runnable obj2)在提交runnable obj1 10秒後開始運行。我想知道這是否可以使用ExecutorService或某種類型.. – yapkm01 2012-01-06 16:05:57

+0

根據您的意見更新。 – 2012-01-06 16:18:27