用于定时或周期性地执行任务。
可以设置任务的延迟执行时间或执行周期。
使用场景:适用于需要定时执行任务的应用程序,如定时清理缓存、定时发送邮件等。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class ScheduledThreadPoolExample {
public static void main(String[] args) {
// 创建一个定时线程池,包含一个线程
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1);
// 提交一个任务给线程池执行,每隔2秒执行一次
executorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "开始执行任务");
processTask();
System.out.println(Thread.currentThread().getName() + "结束执行任务");
}
}, 0, 2, TimeUnit.SECONDS);
// 关闭线程池
executorService.shutdown();
}
private static void processTask() {
try {
Thread.sleep(1000); // 模拟任务执行时间
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们创建了一个定时线程池,包含一个线程。我们提交了一个任务给线程池执行,并设置了任务的执行间隔为2秒。由于使用了scheduleAtFixedRate方法,任务会按照固定的频率执行,每隔2秒执行一次。最后,我们关闭了线程池。需要注意的是,定时线程池适用于需要定期执行的任务,如定时任务、周期性任务等。