java多线程入门(四)定时器timer的使用

简介: java多线程入门(四)定时器timer的使用
  • 定时任务在做开发的时候都会用到,特别在接口中。
  • 下面介绍下Java自带的定时器


使用方法介绍



  • Timer timer=new Timer(true);//设置为守护线程 不设置的话线程会一直存在的
  • 在指定的延迟后安排指定的任务执行。
  • Timer.schedule(TimerTask task, long delay)
  • 在指定的延迟之后开始,为重复的固定延迟执行安排指定的任务。
  • Timer.schedule(TimerTask task, long delay, long period)
  • 计划在指定时间执行指定的任务。
  • Timer.schedule(TimerTask task, Date time)
  • 从指定时间开始,为重复的 固定延迟执行 安排指定的任务。
  • Timer.schedule(TimerTask task, Date firstTime, long period)
  • 在指定的延迟之后开始,为重复的 固定速率执行安排指定的任务
  • Timer.scheduleAtFixedRate(TimerTask task, long delay, long period)
  • 从指定时间开始,为重复的 固定延迟执行 安排指定的任务
  • Timer.scheduleAtFixedRate(TimerTask task, Date firstTime, long period)


入门demo



public class TestTimer extends TimerTask{
  @Override
  public void run() {
    System.out.println("定时器执行了");
  }
  public static void main(String[] args) throws InterruptedException {
    TestTimer tt=new TestTimer();
    Timer timer=new Timer(true);
//    timer.schedule(tt, 10);
//    timer.schedule(tt, 10,10);
//    timer.schedule(tt, new Date());
//    timer.schedule(tt, new Date(),10);
//    timer.scheduleAtFixedRate(tt, 10, 10);
    timer.scheduleAtFixedRate(tt, new Date(), 10);
    Thread.sleep(10000);
  }
}
复制代码


注意事项



  • 创建一个 Timer 对象相当于新启动了一个线程
  • 当TimerTask 抛出异常后 定时任务将不再执行
  • 当timer设置的时间提前的话,会立即执行
  • this.cancel(); 移除当前的定时任务,这里可以用作线程的终止,重启可以重新调用
  • timer.cancel();移除当前timer的所有定时任务
  • 没有延时schedule会参考上次执行的开始时间、而scheduleAtFixedRate会参考上次执行的结束时间
  • 如果有延时的时候都会参照上次结束时间的,schedule向后延时,scheduleAtFixedRate会选择就近原则    执行
  • 一个Timer内部包装了一个Thread和一个Task队列,里面会轮询执行的。当队列为空等待结束后,当前的定时器也就结束了
相关文章
|
1天前
|
消息中间件 缓存 NoSQL
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
Java多线程实战-CompletableFuture异步编程优化查询接口响应速度
|
1天前
|
安全 调度
多线程入门
多线程入门
|
1天前
|
数据采集 存储 Java
高德地图爬虫实践:Java多线程并发处理策略
高德地图爬虫实践:Java多线程并发处理策略
|
2天前
|
Java 开发工具 Windows
Java入门及环境变量
Java入门及环境变量
|
2天前
|
缓存 Java
【Java基础】简说多线程(上)
【Java基础】简说多线程(上)
6 0
|
2天前
|
Java API 调度
[AIGC] 深入理解Java并发编程:从入门到进阶
[AIGC] 深入理解Java并发编程:从入门到进阶
|
2天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
2天前
|
前端开发 Java 测试技术
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
Java从入门到精通:4.1.1参与实际项目,锻炼编程与问题解决能力
|
2天前
|
Java 程序员 数据库连接
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
Java从入门到精通:3.3.2性能优化与调优——内存管理篇
|
2天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架

热门文章

最新文章