future 实际使用

    public static void main(String[] args) throws InterruptedException, ExecutionException {
        ExecutorService executor = Executors.newFixedThreadPool(1);
        try {
            //异步执行任务
            Callable callable = new FutureCallable(new FutureInfo());
            FutureTask<FutureInfo> task = new FutureTask<>(callable);
            //任务提交给线程池
            executor.submit(task);
            //任务是否已经执行完毕
            boolean isDone = task.isDone();
            //任务是否取消
            boolean isCanceller = task.isCancelled();
            //取消任务(true 强制停止,false已经开始的任务不会停止)
//            task.cancel(true);
            //获取结果的时候会柱塞等待结果
            FutureInfo chuju = task.get();
        }finally {
            executor.shutdown();
        }
    }
}
public class FutureCallable implements Callable {

    private FutureInfo info;

    public FutureCallable(FutureInfo info) {
        this.info = info;
    }

    @Override
    public FutureInfo call() throws Exception {
        Thread.sleep(5000);
        info.mm += 10;
        return this.info;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_35418518/article/details/89165963