2012-01-06 20 views
5

Uyku yöntemini kullanarak bir iş parçacığını geciktirmenin geleneksel yolunu biliyorum. Benim sorum ben şu var güya geçerli:Java konuları: ExecutorHedefler arasındaki gecikme süresi

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

uyku yöntemini kullanmadan her iş parçacığı arasında bir gecikme olması ExecutorService sınıfını kullanarak söylemek bir yolu var mı? Yani bu amaç için ExecutorService sınıfında bir yöntem var mı?

+2

Whjat siz "her parçacıkları arasında gecikme" demek istiyorsunuz yapabilirsiniz

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

Eğer üç görevi istiyorsanız gibi bir şey ifade ediyor mu? Gönderilen her görevin çıkışı arasında gecikme var mı? – skaffman

+0

Gecikme için bir neden söyleyebilir misiniz? Runnables/Futures'a sahip olduğunuz çoğu zaman bir çeşit engelleme kullanır. Dahası, ne tür bir işlevsellik gerektirir ki, uyum() kullanım için uygun değildir? –

+0

Sınıf belgelerinde hiçbir şey listelenmemiş. http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max

cevap

9

Eğer 10 saniye arayla sen

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

Yukarıdakilerin belirli bir görevde periyodik bir gecikmeye neden olacağını düşünüyorum - aynı görev periyodik bir dönemde çalıştırılıyor. İstediğim, görev 1 (runnable obj1) ilk çalıştırılan görevler arasında bir gecikmedir ve 10 runnable obj1 gönderildikten sonra görev 2 (runnable obj2) çalışmaya başlar. Bu ExecutorService veya bir çeşit kullanarak yapılabilir eğer merak ediyorum .. – yapkm01

+0

Yorumunuza dayalı güncellendi. –

İlgili konular