package
jiangning.c21.ex;
import
java.util.concurrent.ExecutorService;
import
java.util.concurrent.Executors;
/**
* Java编程思想 第四版 c21 并发
* 练习3:实现一个Runnable,在run()内部打印一个消息,
* 然后调用yield(),重复这个操作3次,然后从run中返回。
* 在构造其中放置一条启动消息,并且放置一条在任务终止
* 时的关闭消息,使用线程创建大量的这种任务并驱动它们。
*
@author
JiangNing
* 2012.10.5
*
*/
public
class
ExerciseThree
implements
Runnable {
private
int
count
;
public
ExerciseThree(){}
public
ExerciseThree(
int
count){
this
.
count
= count;
System.
out
.println(
"Start ExerciseOne "
+ count);
}
@Override
public
void
run() {
for
(
int
i=0; i<3; i++){
System.
out
.println(
count
+
" 进入run() 方法 "
+i);
Thread. yield();
}
System.
out
.println(
"end "
+
count
);
}
public
static
void
main(String[] args) {
ExecutorService exec = Executors. newCachedThreadPool();
for
(
int
i=0; i<5; i++){
exec.execute(
new
ExerciseThree(i));
}
exec.shutdown();
}
}
/**
* 运行结果
Start ExerciseOne 0
Start ExerciseOne 1
Start ExerciseOne 2
Start ExerciseOne 3
0 进入run() 方法 0
1 进入run() 方法 0
2 进入run() 方法 0
Start ExerciseOne 4
1 进入run() 方法 1
0 进入run() 方法 1
2 进入run() 方法 1
3 进入run() 方法 0
4 进入run() 方法 0
1 进入run() 方法 2
3 进入run() 方法 1
end 1
0 进入run() 方法 2
2 进入run() 方法 2
3 进入run() 方法 2
4 进入run() 方法 1
end 3
end 0
end 2
4 进入run() 方法 2
end 4
*/