Callable接口
使用Runnable,Thread实现的线程都无法返回结果。
而Callable创建的线程可以,
start 异步执行 当子线程还未执行完 主线程运行到 get方法 会等待子线程执行完
package org.example.test1;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
@Slf4j
public class Callable<I extends Number> {
public static void main(String[] args) {
//使用FutureTask类来包装Callable,可以创建匿名对象
FutureTask<Integer> futureTask = new FutureTask<Integer>(()->{
System.out.println("子线程运行中");
return 5;
});
// 使用Future Task对象作为Thread对象的target创建,并启动新线程
new Thread(futureTask).start();
try {
Integer integer = futureTask.get();
System.out.println("返回值"+integer);
} catch (InterruptedException e) {
throw new RuntimeException(e);
} catch (ExecutionException e) {
throw new RuntimeException(e);
}
}
}