我们在多线程中很多时候会需要获得线程的返回值,但是多线程又不像普通方法一样,可以直接获得返回值,那么我们应该怎么获得返回值呢?
一、使用Future获得Callable的返回值
import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;public class TestFuture {public static void main(String[] args) throws Exception {ExecutorService newCachedThreadPool = Executors.newCachedThreadPool();Future<String> submit = newCachedThreadPool.submit(new TaskCallable());System.out.println("1.主线程开始");String result = submit.get();System.out.println("2.result:" + result);}}class TaskCallable implements Callable<String> {@Overridepublic String call() throws Exception {System.out.println("3.正在执行任务,需要等待五秒时间,执行任务开始");Thread.sleep(5000);System.out.println("4.正在执行任务,需要等待五秒时间,执行任务结束");return "黄浩轩";}}
执行结果如下: