美文网首页
Executor框架(二)执行的任务

Executor框架(二)执行的任务

作者: Fakecoder_Sunis | 来源:发表于2019-02-26 15:10 被阅读0次

    Runnable

    Executor框架使用Runnable作为基本的任务形式。Runnable是一种有很大局限的抽象,它不能返回一个值或抛出一个受检查的异常。

    Callable

    Callable是一种更好的抽象,它认为call方法将返回一个值,并可能抛出一个异常。

    public interface Callable<V> {
    
        V call() throws Exception;
    }
    

    Future

    future表示一个任务的生命周期,并提供了相应的方法判断是否已经完成取消,以及获取任务的结果和取消任务等。

    public interface Future<V> {
    
        boolean cancel(boolean mayInterruptIfRunning);
    
        boolean isCancelled();
    
        boolean isDone();
    
        V get() throws InterruptedException, ExecutionException;
    
        V get(long timeout, TimeUnit unit)
            throws InterruptedException, ExecutionException, TimeoutException;
    }
    

    get方法的行为取决于任务的状态(尚未开始、正在运行、已完成)。

    如果任务已完成,那么get会立即返回或者抛出Exception

    如果任务没有完成,那么get将堵塞并直到任务完成。如果抛出了异常,那么get将异常封装为ExecutionException并重新抛出。如果任务被取消,那个get将抛出CancellationException。如果get抛出了ExecutionException,那么可以通过getCause来获得被封装的初始异常。

    相关文章

      网友评论

          本文标题:Executor框架(二)执行的任务

          本文链接:https://www.haomeiwen.com/subject/vhmayqtx.html