Java Future/Callable基础应用

来源:互联网 发布:北津学院教务网络管 编辑:程序博客网 时间:2024/06/05 14:39

Callable:可以理解成线程执行的具体业务逻辑,但是具有返回值
Future:Callable执行的返回值

作用:

在线程执行的过程中可以获取到线程执行的状态,例如异步的情况,可以通过线程执行后的状态进行响应的控制,而不至于因为线程执行的不确定性造成不可控

  • 测试代码
package com.zhiwei.thread;import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;/** * callable对象是具有返回值的对象,并且将结果返回给Future对象: * completService可以一次执行一组callable独享方法,并返回最早的结果 */public class CallableAndFuture {    public static void main(String[] args) throws Exception {        ExecutorService threadPool = Executors.newSingleThreadExecutor();        Future<String> future = threadPool.submit(new Callable<String>() {            public String call() throws Exception {                Thread.sleep(5000);                return "hello Java World!";            }        });        System.out.println("5s线程返回结果:" + future.get());        threadPool.shutdown();    }}
  • 效果:5s后
    这里写图片描述