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

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

高洛峰
發布: 2016-12-16 13:51:21
原創
1565 人瀏覽過

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

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

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

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

  1,2,3代碼:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

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代碼

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

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); 

   

        

    

}

登入後複製


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

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板