Java线程(五):Timer和TimerTask

转载 2015年07月10日 10:02:19

   Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。

        Timer是一种线程设施,用于安排以后在后台线程中执行的任务。可安排任务执行一次,或者定期重复执行,可以看成一个定时器,可以调度TimerTask。TimerTask是一个抽象类,实现了Runnable接口,所以具备了多线程的能力。

        一个Timer可以调度任意多个TimerTask,它会将TimerTask存储在一个队列中,顺序调度,如果想两个TimerTask并发执行,则需要创建两个Timer。下面来看一个简单的例子:        

  1. import java.util.Timer;  
  2. import java.util.TimerTask;  
  3. public class TimerTest {  
  4.     static class MyTimerTask1 extends TimerTask {  
  5.         public void run() {  
  6.             System.out.println("爆炸!!!");  
  7.         }  
  8.     }     
  9.     public static void main(String[] args) {  
  10.         Timer timer = new Timer();  
  11.         timer.schedule(new MyTimerTask1(), 2000);// 两秒后启动任务  
  12.     }  
  13. }  
        schedule是Timer调度任务的方法,Timer重构了四个schedule方法,具体可以查看JDK API。

        看一个稍复杂的例子,假设有这样一种需求,实现一个连环炸弹,2秒后爆炸一次,3秒后爆炸一次,如此循环下去,这就需要创建两个任务,互相调度,代码如下:

  1. import java.util.Date;  
  2. import java.util.Timer;  
  3. import java.util.TimerTask;  
  4. public class TimerTest {  
  5.     static class MyTimerTask1 extends TimerTask {  
  6.         public void run() {  
  7.             System.out.println("爆炸!!!");  
  8.             new Timer().schedule(new MyTimerTask2(), 2000);  
  9.         }  
  10.     }  
  11.     static class MyTimerTask2 extends TimerTask {  
  12.         public void run() {  
  13.             System.out.println("爆炸!!!");  
  14.             new Timer().schedule(new MyTimerTask1(), 3000);  
  15.         }  
  16.     }  
  17.     public static void main(String[] args) {  
  18.         Timer timer = new Timer();  
  19.         timer.schedule(new MyTimerTask2(), 2000);  
  20.         while(true) {  
  21.             System.out.println(new Date().getSeconds());  
  22.             try {  
  23.                 Thread.sleep(1000);  
  24.             } catch (InterruptedException e) {  
  25.                 // TODO Auto-generated catch block  
  26.                 e.printStackTrace();  
  27.             }  
  28.         }  
  29.     }  
  30. }  

        自JDK5之后,可以用ScheduledThreadPoolExecutor来替代Timer。

        本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/7436458,转载请注明。

相关文章推荐

Java线程(五):Timer和TimerTask

Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。         Timer是一种线程设施,用于安排以后在后台线程中执...

Java线程(五):Timer和TimerTask

Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。         Timer是一种线程设施,用于安排以后在后台线程中执...

Java线程(五):Timer和TimerTask

上一篇:Java线程(三)         Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。         Timer是一...
  • ghsau
  • ghsau
  • 2012-04-08 00:43
  • 52574

Java线程篇(五):Timer和TimerTask

Timer和TimerTask可以做为实现线程的第三种方式,前两中方式分别是继承自Thread类和实现Runnable接口。         Timer是一种线程设施,用于安排以后在后台线程中执...

线程的生命周期以及Timer和TimerTask的使用

线程的生命周期   线程的生命周期:一个线程从创建到消亡的过程。   如下图,表示线程生命周期中的各个状态:       线程的生命周期可以分为四个状态: 1.创建状态:   当用n...

Timer和TimerTask与线程的关系

1. Timer是一个定时器,它可以根据指定的时间,指定的执行周期来执行固定的任务TimerTask,例子如下: Timer与线程的关系,在Timer源代码中可现如下代码: 1. ...
  • kouwoo
  • kouwoo
  • 2015-11-06 10:25
  • 2079

Timer和TimerTask与线程的关系

1. Timer是一个定时器,它可以根据指定的时间,指定的执行周期来执行固定的任务TimerTask,例子如下: Timer与线程的关系,在Timer源代码中可现如下代码: 1. 以下为Tim...

Java多线程基础(二)定时器类:Timer类和TimerTask类

Java多线程基础(二)定时器类:Timer类和TimerTask类Timer类和TimerTask类是jdk实现定时器功能的早期方法,jdk1.5以前就支持Timer类和TimerTask类。JDK...

学习java多线程的笔记2--Timer类与TimerTask类的使用

今天看了《传智播客_张孝祥_Java多线程与并发库高级应用视频教程》第二讲,只要讲了定时器Timer与TimerTask类的使用 其中有一种使用方案: 见代码: package cn.yang....

【Java多线程】之十:Timer and TimerTask

When we create a Thread in java, by default it’s a user thread and if it’s running JVM will not term...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)