2012-01-06 20 views
5

Tôi biết cách truyền thống để trì hoãn một luồng bằng cách sử dụng phương thức ngủ. Câu hỏi của tôi là được cho là tôi đã điều sau đây:Các luồng Java: ExecutorService delay giữa các chủ đề

ExecutorService threadExecutor = Executors.newFixedThreadPool(5); 

Có cách nào nói bằng cách sử dụng lớp ExecutorService có một sự chậm trễ giữa mỗi chủ đề mà không sử dụng phương pháp ngủ? Tôi có nghĩa là có một phương pháp trong lớp ExecutorService cho mục đích này?

+2

Whjat gì bạn có nghĩa bởi "trì hoãn giữa mỗi chủ đề"? Bạn có chậm trễ giữa từng bước của mỗi tác vụ được gửi không? – skaffman

+0

Bạn có thể nêu rõ lý do cho sự chậm trễ không? Hầu hết thời gian bạn sẽ có Runnables/Futures sử dụng một số loại chặn thay thế. Hơn nữa, bạn yêu cầu chức năng nào làm cho giấc ngủ() không phù hợp để sử dụng? –

+0

Tài liệu lớp học không có gì được liệt kê. http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorService.html – Max

Trả lời

9

Bạn có nghĩa là một cái gì đó giống như

ScheduledExecutorService service = Executors.newScheduledThreadPool(5); 

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

Nếu bạn muốn ba nhiệm vụ, 10 giây ngoài bạn có thể làm

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

Tôi nghĩ rằng ở trên sẽ gây ra một sự chậm trễ định kỳ trên một nhiệm vụ cụ thể - có nghĩa là nhiệm vụ tương tự được chạy tại một khoảng thời gian định kỳ. Những gì tôi muốn là một sự chậm trễ giữa các nhiệm vụ ví dụ nhiệm vụ 1 (runnable obj1) chạy đầu tiên và nhiệm vụ 2 (runnable obj2) bắt đầu chạy sau 10 giây chạy được obj1 đã được đệ trình. Tôi tự hỏi nếu điều này có thể được thực hiện bằng cách sử dụng ExecutorService hoặc một số loại .. – yapkm01

+0

Đã cập nhật dựa trên nhận xét của bạn. –

Các vấn đề liên quan