ScheduledThreadPoolExecutor类方法理解总结:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class TestScheduledThreadPoolExecutor {
private static SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
// ScheduledExecutorService exec=Executors.newScheduledThreadPool(1);
ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
/**
* 每隔一段时间打印系统时间,互不影响的<br/> 创建并执行一个在给定初始延迟后首次启用的定期操作,后续操作具有给定的周期;<br/>
* 也就是将在 initialDelay 后开始执行,然后在initialDelay+period 后执行,<br/> 接着在
* initialDelay + 2 * period 后执行,依此类推。
*/
exec.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out.println(format.format(new Date()));
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
// 开始执行后就触发异常,next周期将不会运行
exec.scheduleAtFixedRate(new Runnable() {
public void run() {
System.out
.println("RuntimeException no catch,next time can't run");
throw new RuntimeException();
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
// 虽然抛出了运行异常,当被拦截了,next周期继续运行
exec.scheduleAtFixedRate(new Runnable() {
public void run() {
try {
throw new RuntimeException();
} catch (Exception e) {
System.out.println("RuntimeException catched,can run next");
}
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
/**
* 创建并执行一个在给定初始延迟后首次启用的定期操作,<br/> 随后,在每一次执行终止和下一次执行开始之间都存在给定的延迟。
*/
exec.scheduleWithFixedDelay(new Runnable() {
public void run() {
System.out.println("scheduleWithFixedDelay:begin,"
+ format.format(new Date()));
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("scheduleWithFixedDelay:end,"
+ format.format(new Date()));
}
}, 1000, 5000, TimeUnit.MILLISECONDS);
/**
* 创建并执行在给定延迟后启用的一次性操作。
*/
exec.schedule(new Runnable() {
public void run() {
System.out.println("The thread can only run once!");
}
}, 5000, TimeUnit.MILLISECONDS);
}
}
分享到:
相关推荐
首先,ScheduledThreadPoolExecutor 的构造函数中会初始化线程池,调用ThreadPoolExecutor.addWorker方法来添加worker线程。worker线程的run方法会调用runWorker方法,runWorker方法会从工作队列中获取任务并执行。 ...
Executors 部分提供了一些线程池类,例如 ThreadPoolExecutor、ScheduledThreadPoolExecutor 等,这些类可以帮助开发者管理线程池。 JUC 框架的类结构可以分为五个部分: * Lock 框架和 Tools 类 * Collections * ...
4. **ScheduledThreadPoolExecutor**:这个类扩展了`ThreadPoolExecutor`,增加了定时和周期性执行任务的功能。`TestScheduledThread.java`可能包含了如何创建和使用`ScheduledThreadPoolExecutor`来调度延迟或定期...
java线程类源码Java ScheduledThreadPoolExecutor演示 java.util.concurrent ScheduledThreadPoolExecutor作为java.util.Timer类的现代替代。
在Java 1.6版本之后,`java.util.concurrent` 包下引入了`ScheduledThreadPoolExecutor`,这是一个非常强大的工具,可以实现定时器和延时加载功能,相比旧的`Timer`类,它提供了更多的控制和并发处理能力。...
总结来说,`ScheduledThreadPoolExecutor`是Java中实现定时和周期任务的强大工具,它的核心在于`DelayedWorkQueue`的使用,以及`RunnableScheduledFuture`接口对于任务延迟和周期性的管理。通过灵活的构造函数和调度...
首先,文档详细介绍了ScheduledThreadPoolExecutor类的结构和工作原理。这个类用于处理延时任务或定时任务,通过三种不同的任务提交方式:schedule、scheduledAtFixedRate、和scheduledWithFixedDelay。重点介绍了...
在这个例子中,我们首先创建了一个`Timer`实例,然后定义了一个`TimerTask`子类,重写了`run()`方法。接着,我们使用`timer.schedule(task, delay)`方法安排任务在延迟`delay`毫秒后执行。如果想让任务周期性执行,...
- JVM(Java虚拟机):理解JVM的工作原理,包括类加载机制、内存模型(堆、栈、方法区等)以及垃圾回收机制。 - 数据类型:掌握原始类型与引用类型的区别,了解自动装箱拆箱。 2. **异常处理** - 异常体系:理解...
- 获取类信息:Class类的使用,如获取类名、构造器、方法等。 - 动态调用方法和访问字段:Method和Field类的应用。 - 创建对象:newInstance()方法创建实例。 8. **网络编程** - Socket编程:TCP和UDP通信的...
`ScheduledExecutorService`接口通过`ScheduledThreadPoolExecutor`类实现。你可以创建一个`ScheduledThreadPoolExecutor`实例,然后使用`scheduleAtFixedRate`或`scheduleWithFixedDelay`方法来安排任务。这些方法...
2. 使用 ScheduledThreadPoolExecutor 的 scheduleAtFixedRate 方法提交任务,指定超时时间后执行任务。 3. 在请求进入熔断器时,提交任务到线程池中等待执行。 4. 如果接口在超时时间内没有返回,任务将被触发,...
NULL 博文链接:https://cywhoyi.iteye.com/blog/1939040
在报告中,我们看到了多个测试用例,如BossEnemy1、BossEnemy2、BossEnemy3等,它们分别针对不同的类和方法进行测试。例如,`vanish()`方法测试了BossEnemy对象是否能正确变为notValid状态,`shoot()`方法测试了是否...
通过`ExecutorService`的`submit()`方法,我们可以提交`Runnable`或`Callable`任务,并获取`Future`对象,`Future`对象可以用来查询任务执行状态或获取结果。 队列在任务处理中起到缓冲和调度的作用。`java.util....
24.Java中atomic包中的原子操作类总结 25.大白话说java并发工具类-CountDownLatch,CyclicBarrier 26.大白话说java并发工具类-Semaphore,Exchanger 27.一篇文章,让你彻底弄懂生产者--消费者问题
在Java程序设计的世界里,掌握各种技巧是提升编程效率和代码质量的关键。"Java程序设计技巧1001例"是一本深入浅出的指南,它涵盖了从基础到高级的各种编程实践,旨在帮助开发者们更好地理解和运用Java语言。在这个...
- 线程池:ExecutorService、ThreadPoolExecutor和ScheduledThreadPoolExecutor的使用。 7. **网络编程** - Socket编程:TCP和UDP通信的基础,ServerSocket和Socket类的使用。 - URL与URLConnection:通过URL...
Executor 框架的主要组件包括 Executor 接口、ExecutorService 接口、ThreadPoolExecutor 类、ScheduledThreadPoolExecutor 类等。 二、Executor 接口 Executor 接口是 Executor 框架的核心接口,定义了 execute()...
2. 继承Thread类:直接继承Thread类,重写`run()`方法。然后创建该子类的实例并调用其`start()`方法来启动线程。这种方式在需要对线程进行定制时较为合适,因为它允许直接访问Thread类的成员变量。 线程的生命周期...