多线程_几种定时器的写法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程_几种定时器的写法相关的知识,希望对你有一定的参考价值。
1 :固定时间后执行一次任务:1000毫秒后执行任务(只执行一次)
2
3 2: 5000毫秒后,执行任务,以后每隔1000毫秒再执行一次任务(无限执行)
4
5 3:交替再生:任务2秒4秒交替的执行(无限执行),
6
7 4: 创建两个循环交替任务:2秒后,A任务执行。 A任务里面创建一个B任务4秒后执行,B任务里面又创建一个A任务2秒后执行,如此往复。
8
9
10 1,2,3代码:
11
12 [java] view plain copy
13
14 import java.util.Date;
15 import java.util.Timer;
16 import java.util.TimerTask;
17 /**
18 * @author Administrator @zsw 2012-7-19 下午04:37:19
19 */
20 public class TraditionalTimer {
21 public static void main(String[] args) {
22 //1:
23 // test1();
24
25 //2:
26 // test2();
27
28 //3:
29 test3();
30 //用于打印时间秒数
31 while (true) {
32 System.out.println(new Date().getSeconds());
33 try {
34 Thread.sleep(1000);
35 } catch (InterruptedException e) {
36 // TODO Auto-generated catch block
37 e.printStackTrace();
38 }
39 }
40
41
42 }
43
44 //1:固定时间后执行一次任务:1000毫秒后执行任务(只执行一次)
45 public static void test1() {
46 new Timer().schedule(new TimerTask() {
47 @Override
48 public void run() {
49 // TODO Auto-generated method stub
50 System.out.println("bombing!");
51 }
52 }, 1000);
53 }
54
55 // 2:5000毫秒后,执行任务,以后每隔1000毫秒再执行一次任务(无限执行)
56 public static void test2() {
57 new Timer().schedule(new TimerTask() {
58 @Override
59 public void run() {
60 // TODO Auto-generated method stub
61 System.out.println("bombing!");
62 }
63 }, 5000, 1000);
64 }
65
66
67 //3:交替再生:任务2秒4秒交替的执行(无限执行),
68 static int count = 0;
69 public static void test3() {
70
71 class MyTimerTask extends TimerTask {
72 @Override
73 public void run() {
74 count = (count + 1) % 2;
75 System.out.println("bombing!");
76 new Timer().schedule(new MyTimerTask(), 2000 + count * 2000);
77 }
78 }
79 new Timer().schedule(new MyTimerTask(), 2000);
80 }
81
82 }
83
84
85
86
87 4代码
88
89
90 [java] view plain copy
91
92 import java.util.Date;
93 import java.util.Timer;
94 import java.util.TimerTask;
95
96 /**
97 * @author Administrator @zsw 2012-7-20 下午08:08:42
98 */
99 public class TraditionalTime2 {
100
101 /*
102 * 创建两个循环交替任务:2秒后,A任务执行。
103 * A任务里面创建一个B任务4秒后执行,B任务里面又创建一个A任务2秒后执行,,如此往复。
104 *
105 */
106 public static void main(String[] args) {
107 TraditionalTime2 t2=new TraditionalTime2();
108 new Timer().schedule(t2.new A(), 2000);
109
110 //用于打印时间秒数
111 while (true) {
112 System.out.println(new Date().getSeconds());
113 try {
114 Thread.sleep(1000);
115 } catch (InterruptedException e) {
116 // TODO Auto-generated catch block
117 e.printStackTrace();
118 }
119 }
120 }
121 class A extends TimerTask {
122 @Override
123 public void run() {
124 System.out.println("A bombing!");
125 new Timer().schedule(new B(), 4000);
126
127 }
128
129 }
130
131 class B extends TimerTask {
132 @Override
133 public void run() {
134 System.out.println("B bombing!");
135 new Timer().schedule(new A(), 2000);
136
137 }
138 }
139 }
以上是关于多线程_几种定时器的写法的主要内容,如果未能解决你的问题,请参考以下文章