1. 程式人生 > 實用技巧 >Callable介面

Callable介面

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大輔助類