ScheduledThreadPoolExecutor使用
时间: 2023-11-04 18:49:52 浏览: 90
源码解析文件ScheduledThreadPoolExecutor
ScheduledThreadPoolExecutor是一个具有延迟任务和定期任务功能的线程池执行器。它是ThreadPoolExecutor的一个子类,并且可以通过设置延迟时间和周期时间来执行任务。
以下是一个示例代码,展示了如何使用ScheduledThreadPoolExecutor:
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ScheduleThreadPoolExecutorTest {
public static void main(String[] args) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(5);
executor.schedule(new Runnable() {
@Override
public void run() {
System.out.println("执行任务");
}
}, 2, TimeUnit.SECONDS);
executor.shutdown();
}
}
在这个示例中,我们创建了一个ScheduledThreadPoolExecutor对象,并设置了最大核心线程数为5。然后,我们调用schedule方法来添加一个延迟任务。任务将在2秒后执行。最后,我们调用shutdown方法来关闭线程池。
另外,还有一个使用scheduleWithFixedDelay方法的示例代码:
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class ScheduleThreadPoolExecutorTest {
public static void main(String[] args) {
ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(100);
executor.scheduleWithFixedDelay(new Runnable() {
@Override
public void run() {
System.out.println("打印当前时间");
try {
Thread.sleep(1000);
//制造异常
int i = 2 / 0;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}, 2, 1, TimeUnit.SECONDS);
}
}
在这个示例中,我们使用scheduleWithFixedDelay方法来添加一个周期任务。任务将在2秒后开始执行,并且每隔1秒执行一次。在任务的run方法中,我们打印当前时间,并且制造了一个异常。
阅读全文