您的位置:首页 > 其它

Callable的使用

2015-07-24 09:58 309 查看
runnable使用的时候不能返回任何值 如果希望运行完返回结果可以使用Callable

下面是Callable的例子

class TaskWithResult implements Callable<String>{

private int id;

public TaskWithResult(int id) {

this.id = id;

}

@Override

public String call() throws Exception {

// TODO Auto-generated method stub

return "result of TaskWithResult " + id;

}

}

public class CallableDemo {

public static void main(String[] args){

ExecutorService exec = Executors.newCachedThreadPool();

ArrayList<Future<String>> result = new ArrayList<Future<String>>();

for(int i = 0; i < 10; i++)

result.add(exec.submit(new TaskWithResult(i)));

for(Future<String> fs : result)

try {

System.out.println(fs.get());

} catch (InterruptedException e) {

System.out.println(e);

return;

} catch (ExecutionException e) {

System.out.println(e);

return;

}finally{

exec.shutdown();

}

}

}



结果是:

result of TaskWithResult 0

result of TaskWithResult 1

result of TaskWithResult 2

result of TaskWithResult 3

result of TaskWithResult 4

result of TaskWithResult 5

result of TaskWithResult 6

result of TaskWithResult 7

result of TaskWithResult 8

result of TaskWithResult 9

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: