博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java多线程学习(五)
阅读量:5958 次
发布时间:2019-06-19

本文共 1489 字,大约阅读时间需要 4 分钟。

hot3.png

    在JDK库中,Timer类主要负责计划任务的功能,即在指定的时间开始执行某一个任务。Timer类负责设置任务计划,TimerTask类负责封装任务,执行任务的代码要放到TimerTask的子类中。

  1. 方法schedule(TimerTask task,Date time)的使用

    ①在指定的日期执行一次某一任务

    public class MyTask extends TimerTask {      public void run() {         System.out.println("运行了,在"+ new Date());     } }public class Run {   private static Timer timer = new Timer();      public static void main(String [] args) {       MyTask myTask = new MyTask();       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");       String time = "2016-03-06 20:00:00";       Date date = sdf.parse(time);              timer.schedule(task, date);   }}

    但是注意,在执行完计划任务之后,进程仍一直处于运行状态。因为创建一个Timer对象就是启动一个新的线程,而且这个新的线程并不是守护线程,他会一直运行。

    ②下面将以上的任务改为守护线程,执行完任务后就销毁。

    public class MyTask extends TimerTask {      public void run() {         System.out.println("运行了,在"+ new Date());     } }public class Run {   private static Timer timer = new Timer(true);      public static void main(String [] args) {       MyTask myTask = new MyTask();       SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");       String time = "2016-03-06 20:00:00";       Date date = sdf.parse(time);              timer.schedule(task, date);   }}

    ③如果计划时间早于当前时间,则会立即执行任务

    ④Timer中允许有多个TimerTask任务。TimerTask是以队列的方式一个一个被顺序执行的,所以执行时间可能与预期有差距。

  2. 方法schedule(TimerTask task, Date fistTime, long period)的使用

    在指定的日期后,按指定的间隔周期的无限循环执行某一任务。

    TimerTask类的cancel()方法用于将自身从重复执行队列中清除。而Timer中cancel()方法用于将任务队列中的全部任务都清除。

转载于:https://my.oschina.net/u/2518655/blog/631793

你可能感兴趣的文章
spark集群启动步骤及web ui查看
查看>>
利用WCF改进文件流传输的三种方式
查看>>
Spring学习总结(2)——Spring的常用注解
查看>>
关于IT行业人员吃的都是青春饭?[透彻讲解]
查看>>
钱到用时方恨少(随记)
查看>>
mybatis主键返回的实现
查看>>
org.openqa.selenium.StaleElementReferenceException
查看>>
数论之 莫比乌斯函数
查看>>
linux下查找某个文件位置的方法
查看>>
python之MySQL学习——数据操作
查看>>
Harmonic Number (II)
查看>>
长连接、短连接、长轮询和WebSocket
查看>>
day30 模拟ssh远程执行命令
查看>>
做错的题目——给Array附加属性
查看>>
Url.Action取消字符转义
查看>>
HBase 笔记3
查看>>
Linux嵌入式GDB调试环境搭建
查看>>
java分析jvm常用指令
查看>>
【Linux】Linux 在线安装yum
查看>>
oracle 管理操作 (转)
查看>>