Skip to content

Commit e282acf

Browse files
committed
java-multithread timer包更新至example4,告一段落
1 parent a4e02b3 commit e282acf

20 files changed

+826
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.TimerTask;
4+
5+
/**
6+
* Created by brian on 2016/4/15.
7+
*/
8+
public class MyTask extends TimerTask {
9+
private int i;
10+
11+
public MyTask(int i) {
12+
this.i = i;
13+
}
14+
15+
@Override
16+
public void run() {
17+
System.out.println("第"+i+"次没有被cancel取消");
18+
}
19+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Calendar;
4+
import java.util.Date;
5+
import java.util.Timer;
6+
7+
/**
8+
* Created by Brian on 2016/4/15.
9+
*/
10+
11+
/**
12+
* P249
13+
* TimerTask类的cancel()方法
14+
* 将自身从任务队列移除,其他任务不受影响
15+
*/
16+
public class Run3_cancel1 {
17+
public static void main(String[] args) {
18+
System.out.println("当前时间为:"+new Date());
19+
Calendar calendar = Calendar.getInstance();
20+
Date runDate = calendar.getTime();
21+
System.out.println("计划时间为:"+ runDate);
22+
23+
TaskA task1 = new TaskA();
24+
TaskB task2 =new TaskB();
25+
Timer timer = new Timer();
26+
timer.schedule(task1,runDate,4000);
27+
timer.schedule(task2,runDate,4000);
28+
29+
}
30+
}
31+
32+
/*
33+
输出:
34+
当前时间为:Fri Apr 15 23:41:22 CST 2016
35+
计划时间为:Fri Apr 15 23:41:22 CST 2016
36+
A run timer=Fri Apr 15 23:41:22 CST 2016
37+
A任务自己移除自己
38+
B run timer=Fri Apr 15 23:41:22 CST 2016
39+
B run timer=Fri Apr 15 23:41:26 CST 2016
40+
B run timer=Fri Apr 15 23:41:30 CST 2016
41+
42+
43+
(一直执行,后面省略)
44+
*/
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Calendar;
4+
import java.util.Date;
5+
import java.util.Timer;
6+
7+
8+
9+
/**
10+
* Created by Brian on 2016/4/15.
11+
*/
12+
13+
/**
14+
* P250
15+
* Timer类的cancel()方法
16+
* 全部任务被清除,且进程被销毁
17+
*/
18+
public class Run3_cancel2 {
19+
public static void main(String[] args) throws InterruptedException{
20+
System.out.println("当前时间为:"+new Date());
21+
Calendar calendar = Calendar.getInstance();
22+
Date runDate = calendar.getTime();
23+
System.out.println("计划时间为:"+ runDate);
24+
25+
TaskA2 task1 = new TaskA2();
26+
TaskB2 task2 =new TaskB2();
27+
Timer timer = new Timer();
28+
timer.schedule(task1,runDate,2000);
29+
timer.schedule(task2,runDate,2000);
30+
Thread.sleep(10000);
31+
timer.cancel();
32+
}
33+
}
34+
35+
/*
36+
输出:
37+
当前时间为:Fri Apr 15 23:49:29 CST 2016
38+
计划时间为:Fri Apr 15 23:49:29 CST 2016
39+
A run timer=Fri Apr 15 23:49:29 CST 2016
40+
B run timer=Fri Apr 15 23:49:29 CST 2016
41+
A run timer=Fri Apr 15 23:49:31 CST 2016
42+
B run timer=Fri Apr 15 23:49:31 CST 2016
43+
A run timer=Fri Apr 15 23:49:33 CST 2016
44+
B run timer=Fri Apr 15 23:49:33 CST 2016
45+
B run timer=Fri Apr 15 23:49:35 CST 2016
46+
A run timer=Fri Apr 15 23:49:35 CST 2016
47+
A run timer=Fri Apr 15 23:49:37 CST 2016
48+
B run timer=Fri Apr 15 23:49:37 CST 2016
49+
50+
*/
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Calendar;
4+
import java.util.Date;
5+
import java.util.Timer;
6+
7+
8+
9+
/**
10+
* Created by Brian on 2016/4/15.
11+
*/
12+
13+
/**
14+
* P252
15+
* Timer类的cancel()方法
16+
* 有时不一定会停止计划任务,(见源码,queue锁)
17+
*/
18+
public class Run3_cancel3 {
19+
public static void main(String[] args) throws InterruptedException{
20+
int i =0;
21+
Calendar calendar = Calendar.getInstance();
22+
Date runDate = calendar.getTime();
23+
24+
while (true){
25+
i++;
26+
Timer timer = new Timer();
27+
MyTask task = new MyTask(i);
28+
timer.schedule(task,runDate);
29+
timer.cancel();
30+
}
31+
32+
}
33+
}
34+
35+
/*
36+
输出:
37+
第1次没有被cancel取消
38+
第44674次没有被cancel取消
39+
第44676次没有被cancel取消
40+
第44678次没有被cancel取消
41+
第44682次没有被cancel取消
42+
第44684次没有被cancel取消
43+
第44686次没有被cancel取消
44+
第44688次没有被cancel取消
45+
第44697次没有被cancel取消
46+
第44702次没有被cancel取消
47+
第44706次没有被cancel取消
48+
第67967次没有被cancel取消
49+
*/
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Date;
4+
import java.util.TimerTask;
5+
6+
/**
7+
* Created by Brian on 2016/4/15.
8+
*/
9+
public class TaskA extends TimerTask{
10+
@Override
11+
public void run() {
12+
System.out.println("A run timer="+new Date());
13+
this.cancel();
14+
System.out.println("A任务自己移除自己");
15+
}
16+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Date;
4+
import java.util.TimerTask;
5+
6+
/**
7+
* Created by Brian on 2016/4/15.
8+
*/
9+
public class TaskA2 extends TimerTask{
10+
@Override
11+
public void run() {
12+
System.out.println("A run timer="+new Date());
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Date;
4+
import java.util.TimerTask;
5+
6+
/**
7+
* Created by brian on 2016/4/15.
8+
*/
9+
public class TaskB extends TimerTask{
10+
@Override
11+
public void run() {
12+
System.out.println("B run timer="+new Date());
13+
}
14+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.brianway.learning.java.multithread.timer.example3;
2+
3+
import java.util.Date;
4+
import java.util.TimerTask;
5+
6+
/**
7+
* Created by Brian on 2016/4/15.
8+
*/
9+
public class TaskB2 extends TimerTask{
10+
@Override
11+
public void run() {
12+
System.out.println("B run timer="+new Date());
13+
}
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.brianway.learning.java.multithread.timer.example4;
2+
3+
/**
4+
* Created by brian on 2016/4/15.
5+
*/
6+
7+
import java.util.Date;
8+
import java.util.Timer;
9+
import java.util.TimerTask;
10+
11+
/**
12+
* P252
13+
* schedule(TimerTask task, long delay)方法
14+
*/
15+
public class Run4_schedule1 {
16+
static public class MyTask extends TimerTask{
17+
@Override
18+
public void run() {
19+
System.out.println("运行了!时间为:"+new Date());
20+
}
21+
}
22+
23+
public static void main(String[] args) {
24+
MyTask task = new MyTask();
25+
Timer timer = new Timer();
26+
System.out.println("当前时间:"+new Date());
27+
timer.schedule(task,7000);
28+
}
29+
}
30+
31+
/*
32+
输出:
33+
当前时间:Sat Apr 16 00:00:22 CST 2016
34+
运行了!时间为:Sat Apr 16 00:00:29 CST 2016
35+
36+
*/
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.brianway.learning.java.multithread.timer.example4;
2+
3+
/**
4+
* Created by brian on 2016/4/15.
5+
*/
6+
7+
import java.util.Date;
8+
import java.util.Timer;
9+
import java.util.TimerTask;
10+
11+
/**
12+
* P253
13+
* schedule(TimerTask task, long delay, long period)方法
14+
*/
15+
public class Run4_schedule2 {
16+
static public class MyTask extends TimerTask{
17+
@Override
18+
public void run() {
19+
System.out.println("运行了!时间为:"+new Date());
20+
}
21+
}
22+
23+
public static void main(String[] args) {
24+
MyTask task = new MyTask();
25+
Timer timer = new Timer();
26+
System.out.println("当前时间:"+new Date());
27+
timer.schedule(task,2000,1000);
28+
}
29+
}
30+
31+
/*
32+
输出:
33+
当前时间:Sat Apr 16 00:01:34 CST 2016
34+
运行了!时间为:Sat Apr 16 00:01:36 CST 2016
35+
运行了!时间为:Sat Apr 16 00:01:37 CST 2016
36+
运行了!时间为:Sat Apr 16 00:01:38 CST 2016
37+
运行了!时间为:Sat Apr 16 00:01:39 CST 2016
38+
39+
*/

0 commit comments

Comments
 (0)