2012-10-17 27 views
6

Tôi có một singleThreadExecutor rằng tôi đang ăn một Runnable với một scheduledFixedDelay như thế nàyTôi có thể buộc phải chạy thêm một lần thực hiện theo lịch không?

Runnable periodic = new Runnable() { ... } 

ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); 
executor.scheduleWithFixedDelay(periodic, 1, 1, TimeUnit.MINUTES); 

Nó sẽ chạy với 1 phút chậm trễ giữa hành quyết. Vấn đề là, đôi khi tôi cần phải chạy nó theo yêu cầu. Điều đó có thể không? Tôi đã nghĩ về việc hủy bỏ việc thực hiện, chạy Runnable và khởi động lại việc thực hiện nhưng những gì tôi thực sự thích là một số phương thức đơn giản chỉ thực thi Runnable một đầu và sắp xếp lại nó để chạy lại sau một phút.

Trả lời

4

Khi bạn muốn nhiệm vụ để chạy bạn có thể gửi nó

executor.submit(periodic); 

hoặc thêm nó với một sự chậm trễ

executor.schedule(periodic, delay, units); 
+0

Nhưng nếu người thi hành đã có Runnable này hoặc thực hiện hoặc dự kiến ​​những gì sẽ xảy ra sau đó ? –

+0

Nó sẽ chạy cả hai lần bạn yêu cầu nó chạy. –

+2

Mặc dù không chính xác những gì tôi muốn tôi đã chấp nhận câu trả lời này. Tôi thực sự muốn nó để thực hiện * kế hoạch * thực hiện ngay bây giờ thay vì khi nó đã được lên kế hoạch nhưng nó cũng hoạt động để thêm định kỳ như một công việc một thời gian mới khi tôi đang sử dụng một singleThreadScheduledExecutor. –

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