2012-01-06 16 views
5

Znam tradycyjny sposób opóźniania wątku za pomocą metody uśpienia. Moje pytanie jest podobno mam następujący:Wątki Java: opóźnienie ExecutorService między wątkami

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

Czy istnieje sposób powiedzieć, używając klasy ExecutorService mieć opóźnienie pomiędzy każdą wątków bez użycia metody spać? Mam na myśli, czy istnieje metoda w klasie ExecutorService w tym celu?

+2

Whjat masz na myśli przez „opóźnienie pomiędzy każdymi wątków”? Czy opóźniasz się między egzekucjami każdego zgłoszonego zadania? – skaffman

+0

Czy mógłbyś podać przyczynę opóźnienia? Przez większość czasu gry Runnables/Futures używają zamiast tego blokowania. Co więcej, jakiej funkcjonalności potrzebujesz, aby funkcja sleep() nie była odpowiednia do użytku? –

+0

Dokumentacja klas nie ma nic na liście. http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max

Odpowiedz

9

Czy masz na myśli coś takiego

ScheduledExecutorService service = Executors.newScheduledThreadPool(5); 

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

Jeśli chcesz trzy zadania, 10 sekund od siebie można zrobić

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

Myślę, że powyższe spowoduje okresowe opóźnienie w określonym zadaniu - co oznacza, że ​​to samo zadanie jest uruchamiane w okresie okresowym. To, czego chcę, to opóźnienie między zadaniami, np. Zadanie 1 (uruchomione obj1) uruchomiono jako pierwsze, a zadanie 2 (uruchomione obj2) uruchamia się po przesłaniu 10-sekundowego uruchomionego obiektu obj1. Zastanawiam się, czy można to zrobić za pomocą ExecutorService lub innego rodzaju. – yapkm01

+0

Zaktualizowałem na podstawie Twojego komentarza. –

Powiązane problemy