Callable介面
阿新 • • 發佈:2020-08-06
7、Callable
1、可以有返回值
2、可以丟擲異常
3、方法不同,run()/ call()
public class CallableTest { public static void main(String[] args) throws ExecutionException, InterruptedException { // new Thread(new Runnable()).start(); // new Thread(new FutureTask<V>()).start(); // new Thread(new FutureTask<V>( Callable )).start(); new Thread().start(); // 怎麼啟動Callable MyThread thread = new MyThread(); //介面卡模式適配 FutureTask futureTask = new FutureTask(thread); // 適配類 new Thread(futureTask,"A").start(); new Thread(futureTask,"B").start(); // 結果會被快取,效率高 Integer o = (Integer) futureTask.get(); //這個get 方法可能會產生阻塞!把他放到最後 // 或者使用非同步通訊來處理! System.out.println(o); } } class MyThread implements Callable<Integer> { @Override public Integer call() { System.out.println("call()"); // 會列印幾個call // 耗時的操作 return 1024; } }
Thread 不能直接接受Callable引數
細節:
1、有快取
2、結果可能需要等待,會阻塞!
視訊參考https://www.bilibili.com/video/BV1B7411L7tE
上一篇:集合類不安全
下一篇:JUC常用3大輔助類