Callables and Futures

来源:互联网 发布:外贸邮件搜索软件 编辑:程序博客网 时间:2024/05/16 11:26

public interface Callable<V>

{

   V call() throws Exception;

}

 

public interface Future<V>

{

   V get() throws . . .;

   V get(long timeout, TimeUnit unit) throws . . .;

   void cancel(boolean mayInterrupt);

   boolean isCancelled();

   boolean isDone();

}

无参数的get方法会一直blocked直到计算完成,有参数如果时间到了还没完成,则抛出TimeoutException。他们两个都会抛出  InterruptedException

cancel方法试图中止任务线程。如果线程还没有start()那么它永不会开始,如果已经开始并且cancel的参数为true,则会调用interrupt()方法来中止

Callable<Integer> myComputation = . . .;

FutureTask<Integer> task = new FutureTask<Integer>(myComputation);

Thread t = new Thread(task); // it's a Runnable

 

t.start();

. . .

Integer result = task.get(); // it's a Future

原创粉丝点击