import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledExecutorServiceExample {
public static void main(String[] args) {
// 创建一个ScheduledExecutorService实例
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(2);
// 提交一个延迟3秒后执行的任务
scheduledExecutorService.schedule(() -> {
System.out.println("Delayed task executed after 3 seconds");
}, 3, TimeUnit.SECONDS);
// 提交一个立即执行然后每隔1秒重复执行的任务
scheduledExecutorService.scheduleAtFixedRate(() -> {
System.out.println("Repeating task executed every 1 second");
}, 0, 1, TimeUnit.SECONDS);
// 注意:在实际应用中,应该在不再需要ScheduledExecutorService时将其关闭,
// 但在这个例子中,让任务无限期地执行下去。在实际情况下,可能会有适当的停止条件。
// 为了避免程序立即退出,在这里简单地等待一段时间,让任务有机会执行。
// 这只是为了演示,并不是推荐的做法。
try {
Thread.sleep(10000); // 等待10秒,让上面的任务有机会执行几次
} catch (InterruptedException e) {
e.printStackTrace();
}
// 关闭ScheduledExecutorService
scheduledExecutorService.shutdown();
try {
if (!scheduledExecutorService.awaitTermination(800, TimeUnit.MILLISECONDS)) {
scheduledExecutorService.shutdownNow();
}
} catch (InterruptedException e) {
scheduledExecutorService.shutdownNow();
}
}
}
上面代码中创建了一个ScheduledExecutorService
实例,并指定了线程池的大小为2,然后,提交了两个任务:一个延迟3秒后执行,另一个立即执行并每隔1秒重复执行。
END!