本文共 1287 字,大约阅读时间需要 4 分钟。
可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。
执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。
package thread.callable;import java.util.concurrent.ExecutionException;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/** * Callable和Future ** 1.可返回值的任务必须[实现Callable接口],类似的,无返回值的任务必须[Runnable接口] * 2.执行Callable任务后,可以获取一个[Future的对象],在该对象上调用get就可以获取到Callable任务返回的Object了。 *
* Created by heqianqian on 2017/4/15. */public class CallableDemo {
public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService pool = Executors.newFixedThreadPool(2); Future future1 = pool.submit(new MyCallable("A")); Future future2 = pool.submit(new MyCallable("B")); System.out.println(future1.get().toString()); System.out.println(future2.get().toString()); pool.shutdown(); }}
package thread.callable;import java.util.concurrent.Callable;/** * MyCallable * Created by heqianqian on 2017/4/15. */public class MyCallable implements Callable { private String name; public MyCallable(String name) { this.name = name; } @Override public Object call() throws Exception { return name + "返回的内容"; }}
转载地址:http://htqli.baihongyu.com/