首頁  >  文章  >  Java  >  多線程_幾種定時器的寫法

多線程_幾種定時器的寫法

高洛峰
高洛峰原創
2016-12-16 13:51:211483瀏覽

1 :固定時間後執行一次任務:1000毫秒後執行任務(只執行一次)

2: 5000毫秒後,執行任務,以後每隔1000毫秒再執行一次任務(無限執行)

3:交替再生:任務2秒4秒交替的執行(無限執行),

4: 創建兩個循環交替任務:2秒後,A任務執行。 A任務裡面創建一個B任務4秒後執行,B任務裡面又創建一個A任務2秒後執行,如此往復。

  1,2,3代碼:

import java.util.Date;  
import java.util.Timer;  
import java.util.TimerTask;  
/** 
 * @author Administrator @zsw 2012-7-19 下午04:37:19 
 */  
public class TraditionalTimer {  
    public static void main(String[] args) {  
        //1:  
//      test1();  
          
        //2:  
//      test2();  
          
        //3:  
        test3();  
        //用于打印时间秒数  
        while (true) {  
            System.out.println(new Date().getSeconds());  
            try {  
                Thread.sleep(1000);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
          
          
    }  
  
    //1:固定时间后执行一次任务:1000毫秒后执行任务(只执行一次)  
    public static void test1() {  
        new Timer().schedule(new TimerTask() {  
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                System.out.println("bombing!");  
            }  
        }, 1000);  
    }  
  
    // 2:5000毫秒后,执行任务,以后每隔1000毫秒再执行一次任务(无限执行)  
    public static void test2() {  
        new Timer().schedule(new TimerTask() {  
            @Override  
            public void run() {  
                // TODO Auto-generated method stub  
                System.out.println("bombing!");  
            }  
        }, 5000, 1000);  
    }  
  
      
    //3:交替再生:任务2秒4秒交替的执行(无限执行),  
    static int count = 0;  
    public static void test3() {  
  
        class MyTimerTask extends TimerTask {  
            @Override  
            public void run() {  
                count = (count + 1) % 2;  
                System.out.println("bombing!");  
                new Timer().schedule(new MyTimerTask(), 2000 + count * 2000);  
            }  
        }  
        new Timer().schedule(new MyTimerTask(), 2000);  
    }  
  
}

     4代碼

import java.util.Date;  
import java.util.Timer;  
import java.util.TimerTask;  
  
/** 
 * @author Administrator @zsw 2012-7-20 下午08:08:42 
 */  
public class TraditionalTime2 {  
      
    /* 
     * 创建两个循环交替任务:2秒后,A任务执行。 
     * A任务里面创建一个B任务4秒后执行,B任务里面又创建一个A任务2秒后执行,,如此往复。 
     *  
     */  
    public static void main(String[] args) {  
        TraditionalTime2 t2=new TraditionalTime2();  
        new Timer().schedule(t2.new A(), 2000);  
          
         //用于打印时间秒数  
        while (true) {  
            System.out.println(new Date().getSeconds());  
            try {  
                Thread.sleep(1000);  
            } catch (InterruptedException e) {  
                // TODO Auto-generated catch block  
                e.printStackTrace();  
            }  
        }  
    }  
    class A extends TimerTask {  
        @Override  
        public void run() {  
            System.out.println("A bombing!");  
            new Timer().schedule(new B(), 4000);  
  
        }  
  
    }  
  
    class B extends TimerTask {  
        @Override  
        public void run() {  
            System.out.println("B bombing!");  
            new Timer().schedule(new A(), 2000);  
  
        }  
    }  
}


更多 多線程_幾種定時器的寫法相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn