public interface Callable<V>
返回结果并且可能抛出异常的任务。实现者定义了一个不带任何参数的叫做 call 的方法。 此方法返回计算结果,并抛出经过检查的异常
与Runnable相似,但是Runnable不返回计算结果,且不抛异常
void
run()
使用实现接口 Runnable
的对象创建一个线程时,启动该线程将导致在独立执行的线程中调用对象的
run
方法。
V
call()
计算结果,如果无法计算结果,则抛出一个异常。
通过callable 和Runnable构建FutureTask任务,调用run()方法获得计算结果,并输出
package com.google.minatest.concurrent;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import com.google.minatest.entity.Message;
public class FutureTaskStudy {
FutureTask<Message> future = null;
public static void main(String[] args) {
try {
new FutureTaskStudy().test();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
public void test() throws InterruptedException, ExecutionException {
future = new FutureTask<Message>(new CallableImpl());
future.run();
System.out.println(future.get());
future = new FutureTask<Message>(new RunnableImpl(), null);
future.run();
System.out.println(future.get());
}
private class CallableImpl implements Callable<Message> {
public Message call() throws Exception {
return new Message();
}
}
private class RunnableImpl implements Runnable {
public void run() {
new Message();
}
}
}