欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

转:定时器设计

程序员文章站 2022-04-04 16:49:08
...

1、传统的定时器实现

 

  1. package cn.itcast.thread;  
  2.   
  3. import java.util.Date;  
  4. import java.util.Timer;  
  5. import java.util.TimerTask;  
  6.   
  7. public class TraditionalTimer {  
  8.   
  9.     private static  int count = 0;  
  10.       
  11.     public static void main(String[] args) {  
  12.           
  13.         //延迟2秒执行run方法中的内容  
  14.         final Timer timer = new Timer();  
  15.         timer.schedule(new TimerTask() {  
  16.             public void run() {  
  17.                 System.out.println("haha");  
  18.             }  
  19.         }, 2000);  
  20.           
  21.         //延迟2秒执行run方法中的内容,以后每间隔一秒去执行run方法  
  22.         timer.schedule(  
  23.                 new TimerTask() {  
  24.                     public void run() {  
  25.                         System.out.println("hello java");  
  26.                     }  
  27.                 },   
  28.                 2000,  
  29.                 1000);  
  30.   
  31.         //延迟2秒执行run方法中的内容,以后根据count的值判断是间隔2秒还是4秒去执行run方法  
  32.         System.out.println(new Date().getSeconds());  
  33.         class MyTimerTask extends TimerTask {  
  34.             public void run() {  
  35.                 count ++;  
  36.                 System.out.println(new Date().getSeconds());  
  37.                 System.out.println("hello java!");  
  38.                 if (count % 2 == 1) {  
  39.                     timer.schedule(new MyTimerTask(), 4000);  
  40.                 } else {  
  41.                     timer.schedule(new MyTimerTask(), 2000);  
  42.                 }  
  43.                   
  44.             }  
  45.         }  
  46.         TimerTask tt = new MyTimerTask();  
  47.         timer.schedule(tt, 2000);  
  48.     }  
  49.   

2、利用jdk新特性来设计定时器

 

  1. package cn.itcast.thread;  
  2.   
  3. import java.util.Calendar;  
  4. import java.util.concurrent.Executors;  
  5. import java.util.concurrent.ScheduledExecutorService;  
  6. import java.util.concurrent.TimeUnit;  
  7.   
  8. public class ModernTimerTest {  
  9.   
  10.     public static void main(String[] args) {  
  11.   
  12.         final ScheduledExecutorService timer = Executors.newScheduledThreadPool(1);  
  13.         timer.schedule(  
  14.                 new Runnable() {  
  15.                     public void run() {  
  16.                         System.out.println(Calendar.getInstance().get(Calendar.SECOND));  
  17.                     }  
  18.                 },   
  19.         1,   
  20.         TimeUnit.SECONDS  
  21.         );  
  22.           
  23.         class MyTask implements Runnable {  
  24.             public void run() {  
  25.                 System.out.println(" ----> " + Calendar.getInstance().get(Calendar.SECOND));  
  26.                 timer.schedule(new MyTask(), 2, TimeUnit.SECONDS);  
  27.             }  
  28.         }  
  29.           
  30.         timer.schedule(  
  31.                 new MyTask(),  
  32.                 1,   
  33.                 TimeUnit.SECONDS  
  34.         );  
  35.           
  36.     }  
  37.   
  38. }  
相关标签: timer