每天糊弄自己一分钟-线程第二节
实现Callable接口
通过Callable接口,可以达到多线程执行任务,并且获取线程执行结果的目的。需要注意的是,在调用FutureTask的get()方法时,线程会阻塞,直至获取到结果,或抛出异常结束。
private static void case3() {
// 实现 Callable 接口
Callable<String> callable = () -> {
doWorker();
return "success";
};
// 创建 Future 实例
FutureTask<String> stringFutureTask = new FutureTask<>(callable);
// 提交任务给 Thread 类执行
new Thread(stringFutureTask).start();
System.out.println("君不见黄河之水天上来,奔流到海不复还");
try {
// 获取返回值
String s = stringFutureTask.get();
System.out.println(s);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("线程终止");
} catch (ExecutionException e) {
e.printStackTrace();
System.out.println("线程执行异常");
}
}
```