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队列,里面会轮询执行的。当队列为空等待结束后,当前的定时器也就结束了
相关文章
|
6天前
|
Java 应用服务中间件 数据库连接
Java 新手入门:Spring Boot 启动揭秘,小白也能秒懂的超详细指南
Java 新手入门:Spring Boot 启动揭秘,小白也能秒懂的超详细指南
23 2
|
6天前
|
Java 测试技术 API
Java 新手入门:Java单元测试利器,Mock详解
Java 新手入门:Java单元测试利器,Mock详解
28 1
|
3天前
|
设计模式 前端开发 Java
【前端学java】SpringBootWeb极速入门-分层解耦(03)
【8月更文挑战第13天】SpringBootWeb极速入门-分层解耦(03)
8 2
【前端学java】SpringBootWeb极速入门-分层解耦(03)
|
4天前
|
开发框架 前端开发 Java
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
【8月更文挑战第12天】SpringBootWeb极速入门-实现一个简单的web页面01
15 3
【前端学java】SpringBootWeb极速入门-实现一个简单的web页面01
|
4天前
|
JSON 前端开发 Java
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
【8月更文挑战第12天】SpringBootWeb极速入门-请求参数解析(02)
10 1
【前端学java】SpringBootWeb极速入门-请求参数解析(02)
|
6天前
|
Java 测试技术 Spring
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
Java 新手入门:依赖注入的 N 种姿势,总有一款适合你!
15 2
|
6天前
|
Java
Java 新手入门:重载和重写傻傻分不清?一篇文章带你清晰理解!
Java 新手入门:重载和重写傻傻分不清?一篇文章带你清晰理解!
17 0
Java 新手入门:重载和重写傻傻分不清?一篇文章带你清晰理解!
|
3天前
|
算法 安全 Java
深入解析Java多线程:源码级别的分析与实践
深入解析Java多线程:源码级别的分析与实践
|
4天前
|
存储 监控 算法
掌握Java内存管理:从入门到精通
在Java的世界里,内存管理是程序运行的心脏。本文将带你走进Java内存管理的奥秘,从基础概念到高级技巧,一步步揭示如何优化你的Java应用。准备好迎接挑战,让我们共同揭开高效内存使用的面纱!
|
4天前
|
Java 程序员 调度
深入浅出Java多线程编程
Java作为一门成熟的编程语言,在多线程编程方面提供了丰富的支持。本文将通过浅显易懂的语言和实例,带领读者了解Java多线程的基本概念、创建方法以及常见同步工具的使用,旨在帮助初学者快速入门并掌握Java多线程编程的基础知识。
4 0