1 Executor框架的简介
1.5后引入的Executor框架的最大优点是把任务的提交和执行解耦。要执行任务的人只需把Task描述清楚,然后提交即可。这个Task是怎么被执行的,被谁执行的,什么时候执行的,提交的人就不用关心了。具体点讲,提交一个Callable对象给ExecutorService(如最常用的线程池ThreadPoolExecutor),将得到一个Future对象,调用Future对象的get方法等待执行结果就好了。
2 一个最简单的例子
看上去这个执行过程是这个样子。调用这段代码的是老大的老大了,他所需要干的所有事情就是找到一个合适的老大(如下面例子中laodaA就荣幸地被选中了),提交任务就好了。
// 一个有7个作业线程的线程池,老大的老大找到一个管7个人的小团队的老大
ExecutorService laodaA = Executors.newFixedThreadPool(7);
// 提交作业给老大,作业内容封装在Callable中,约定好了输出的类型是String。
String outputs = laoda.submit(new Callable() {
public String call() throws Exception {
return "I am a task, which submited by the so called laoda, and run by those anonymous workers";
}
// 提交后就等着结果吧,到底是手下7个作业中谁领到任务了,老大是不关心的。
}).get();
System.out.println(outputs