架构系列——定时任务中的Timer类使用简析

简介: 架构系列——定时任务中的Timer类使用简析

前言

该类位于java.util包下

最近项目用到了Timer类(用于定时任务),记录一下要点与心得,方便以后查看

一、源码中的几个方法

1.经过delay(ms)后开始进行调度一次

2.在指定的时间点time上调度一次

3.在delay(ms)后开始调度,每次调度完后,最少等待period(ms)后才开始调(算是周期性调度任务)

4.跟第3个一样,也是周期性调度任务,只是第二个参数为第一次调度的时间

二、案例

ppackage com.test.client;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
/**  
 * @ClassName: Test  
 * @Description:   
 * @author: hanshuhao  
 * @date: 2019年10月29日
 */
public class TestTimer {
  public static void main(String[] args) throws InterruptedException{
    Timer timer = new Timer();
    Calendar calendar = Calendar.getInstance();
    //开始时间为当前时间+3秒
    calendar.add(Calendar.SECOND, 3);
    Date startDate = calendar.getTime();
    System.out.println(startDate);
    TimerTask task = new Mytask("my_task1");
    TimerTask task2 = new Mytask("my_task2");
    //timer每隔5秒调用一次task
    timer.schedule(task, startDate, 5000);
    timer.schedule(task2, startDate, 5000);
    //测试守护线程
//    while(true) {
//      System.out.println("running...");
//      Thread.sleep(10000);
//      break;
//    }
  }
}
class Mytask extends TimerTask{
  String taskName = "";
  public Mytask(String name) {
    this.taskName = name;
  }
  @Override
  public void run() {
    // TODO Auto-generated method stub
    Thread thread = new Thread(() -> {
      try {
        System.out.println("the task " + this.taskName + " begin at " + System.currentTimeMillis());
        Thread.sleep(3000);
        System.out.println("the task " + this.taskName + " done at " + System.currentTimeMillis());
      } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
      }
    });
    thread.start();
  }
}


三、扩展

Timer类有个带boolean参数的构造方法,里面可以填写是否为守护线程。顺便把守护线程也了解了一下,简单来说,只要有用户线程在运行,守护线程就不会停掉。(参考: Java中守护线程的总结

OK,GAME OVER


相关文章
|
5月前
|
Java
javaEE架构必须懂的知识Base类
javaEE架构必须懂的知识Base类
26 0
|
2月前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
16 0
|
5月前
|
架构师 开发工具 C++
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
最新python--类与面向对象-1,一线互联网架构师360°全方面性能调优
|
5月前
|
存储 Java 编译器
用王者荣耀告诉你,什么叫类与对象,思维图+核心+架构让你一步到位
用王者荣耀告诉你,什么叫类与对象,思维图+核心+架构让你一步到位
|
5月前
|
程序员 Python
类的设计奥秘:从代码到架构的科普全解
类的设计奥秘:从代码到架构的科普全解
85 2
|
5月前
|
存储 消息中间件 算法
深度思考:架构师必须掌握的五大类架构设计风格
数据流风格注重数据在组件间的流动,适合处理大量数据。调用返回风格则强调函数或方法的调用与返回,过程清晰明了。独立构件风格让每个构件独立运作,通过接口交互,提升灵活性和可重用性。虚拟机风格则模拟完整系统,实现资源的高效利用。
256 0
深度思考:架构师必须掌握的五大类架构设计风格
|
5月前
|
机器学习/深度学习 人工智能 自然语言处理
Transformer类架构的发展带动多模态融合
【1月更文挑战第21天】Transformer类架构的发展带动多模态融合
86 1
Transformer类架构的发展带动多模态融合
|
缓存 Java Spring
30个类手写Spring核心原理之Ioc顶层架构设计(2)
Annotation的代码实现我们还是沿用Mini版本的,保持不变,复制过来便可。
62 0
|
编解码 供应链 监控
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.1 直播类泛娱乐定义
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.1 直播类泛娱乐定义
270 0
|
存储 编解码 视频直播
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.2 直播类业务场景与架构
《泛娱乐行业技术服务白皮书》——三、泛娱乐典型业务架构与场景——3.1直播类泛娱乐——3.1.2 直播类业务场景与架构
136 0
下一篇
无影云桌面