【www.gdgbn.com--js教程】

public class callabletry {

class task implements callable {
private long times;
private string name;

public task(long times, string name) {
this.name = name;
this.times = times;
}

@override
public long call() {
system.out.println(name + "开始执行, time[" + times + "]...");
long before = system.currenttimemillis();
for (int i = 0; i < times; i++)
;
long after = system.currenttimemillis();
system.out.println(name + "执行结束.");
long cost = after - before;
system.out.println(name + "耗时 :" + cost);
return cost;
}
}

/**
* @param args
*/
public static void main(string[] args) throws executionexception,
interruptedexception {
long total = 0;
callabletry tr = new callabletry();
executorservice pool = executors.newcachedthreadpool();
random rand = new random();
int count = 10;
for (int i = 0; i < count; i++) {
total += pool.submit(
tr.new task(10000000 * rand.nextint(100), i + "任务")).get();
system.out.println("next task...");
}
pool.shutdown();
while (!pool.isterminated())
;
system.out.println("耗时:" + total + "毫秒, 平均用时:" + total * 1.0 / count
+ "毫秒");
}

}

0任务开始执行, time[860000000]...
0任务执行结束.
0任务耗时 :4750
next task...
1任务开始执行, time[430000000]...
1任务执行结束.
1任务耗时 :2343
next task...
2任务开始执行, time[500000000]...
2任务执行结束.
2任务耗时 :1703
next task...
3任务开始执行, time[990000000]...
3任务执行结束.
3任务耗时 :3344
next task...
4任务开始执行, time[340000000]...
4任务执行结束.
4任务耗时 :1156
next task...
5任务开始执行, time[640000000]...
5任务执行结束.
5任务耗时 :2250
next task...
6任务开始执行, time[880000000]...
6任务执行结束.
6任务耗时 :3032
next task...
7任务开始执行, time[800000000]...
7任务执行结束.
7任务耗时 :2781
next task...
8任务开始执行, time[450000000]...
8任务执行结束.
8任务耗时 :1547
next task...
9任务开始执行, time[980000000]...
9任务执行结束.
9任务耗时 :3375
next task...
耗时:26281毫秒, 平均用时:2628.1毫秒

行了很多次,时间上有差异,但是执行顺序却一直是这个顺序...

而把

total += pool.submit( tr.new task(10000000 * rand.nextint(100), i + "任务")).get();改成

next task...
next task...
0任务开始执行, time[880000000]...
next task...
next task...
next task...
next task...
next task...
next task...
next task...
next task...
2任务开始执行, time[790000000]...
1任务开始执行, time[230000000]...
3任务开始执行, time[270000000]...
4任务开始执行, time[490000000]...
5任务开始执行, time[950000000]...
6任务开始执行, time[950000000]...
7任务开始执行, time[630000000]...
8任务开始执行, time[510000000]...
9任务开始执行, time[740000000]...
1任务执行结束.
1任务耗时 :4484
3任务执行结束.
3任务耗时 :5094
7任务执行结束.
7任务耗时 :8281
4任务执行结束.
4任务耗时 :9079
9任务执行结束.
9任务耗时 :9000
8任务执行结束.
8任务耗时 :9860
5任务执行结束.
5任务耗时 :14843
6任务执行结束.
6任务耗时 :15641
2任务执行结束.
2任务耗时 :18297
0任务执行结束.
0任务耗时 :19000

本文来源:http://www.gdgbn.com/wangyezhizuo/28571/