Giao diện được lập lịch trìnhExecutorService
Giao diện java.util.concurrent.SchedisedExecutorService là giao diện con của giao diện ExecutorService và hỗ trợ thực thi các tác vụ trong tương lai và / hoặc định kỳ.
Các phương thức SchedisedExecutorService
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) Tạo và thực thi một SchedonedFuture được bật sau độ trễ nhất định. |
2 | ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) Tạo và thực hiện hành động một lần được bật sau độ trễ nhất định. |
3 | ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit) Tạo và thực hiện một hành động định kỳ được kích hoạt đầu tiên sau độ trễ ban đầu nhất định và sau đó với khoảng thời gian nhất định; nghĩa là các quá trình thực thi sẽ bắt đầu sau thời gian ban đầu (InitialDelay) rồi đến thời gian ban đầu + thời gian, sau đó giai đoạn ban đầu + thời gian 2 *, v.v. |
4 | ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit) Tạo và thực hiện một hành động định kỳ được kích hoạt đầu tiên sau độ trễ ban đầu nhất định và sau đó với độ trễ nhất định giữa việc kết thúc một lần thực hiện và bắt đầu lần tiếp theo. |
Thí dụ
Chương trình TestThread sau đây cho thấy cách sử dụng giao diện SchedisedExecutorService trong môi trường dựa trên luồng.
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
public class TestThread {
public static void main(final String[] arguments) throws InterruptedException {
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
final ScheduledFuture<?> beepHandler =
scheduler.scheduleAtFixedRate(new BeepTask(), 2, 2, TimeUnit.SECONDS);
scheduler.schedule(new Runnable() {
@Override
public void run() {
beepHandler.cancel(true);
scheduler.shutdown();
}
}, 10, TimeUnit.SECONDS);
}
static class BeepTask implements Runnable {
public void run() {
System.out.println("beep");
}
}
}
Điều này sẽ tạo ra kết quả sau.
Đầu ra
beep
beep
beep
beep