Callable
- 可以有返回值
- 可以?huà)伋霎惓?/li>
- 方法 call()
public class CallableTest {
public static void main(String[] args) throws InterruptedException, ExecutionException {
MyCallable myCallable = new MyCallable();
FutureTask task = new FutureTask<>(myCallable);
new Thread(task, "tname1").start();
new Thread(task, "tname2").start(); // 結(jié)果會(huì)被緩存,多次調(diào)用call方法只執(zhí)行一次
// 獲取callable返回結(jié)果 get方法可能產(chǎn)生阻塞
String str = (String) task.get();
System.out.println(str);
}
}
class MyCallable implements Callable<String> {
@Override
public String call() throws Exception {
System.out.println("call runs..");
return "hello world";
}
}
image.png