Runnable任务
提交的任务只需要实现Runnable接口,
就可以submit给线程池
问题:此接口没有返回值,只能保存到类的内部变量,提供额外的方法进行读取
Callable任务
Callable接口是一个泛型接口,
可以返回指定类型的结果
获得异步执行的结果
ExecutorService executor = Executors.newFixedThreadPool(4);
// 定义任务:(给出任务的返回值类型)
Callable<String> task = new Task();
// 提交任务并获得Future对象:
Future<String> future = executor.submit(task);
// 从Future获取异步执行返回的结果:
String result = future.get(); // 可能阻塞
Future对象的方法
get():获取结果(可能会等待)
get(long timeout, TimeUnit unit):
获取结果,但只等待指定的时间;
cancel(boolean mayInterruptIfRunning):
取消当前任务;
isDone():判断任务是否已完成。