中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java多線程中的回調如何運用

發布時間:2022-06-01 16:48:24 來源:億速云 閱讀:833 作者:iii 欄目:大數據

這篇“java多線程中的回調如何運用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java多線程中的回調如何運用”文章吧。

1.回調方式

1)class A實現接口CallBack callback——背景1

2)class A中包含一個class B的引用b ——背景2

3)class B有一個參數為callback的方法f(CallBack callback) ——背景3

4)A的對象a調用B的方法 f(CallBack callback) ——A類調用B類的某個方法 C

5)然后b就可以在f(CallBack callback)方法中調用A的方法 ——B類調用A類的某個方法D

2.多線程中的回調

Java多線程中可以通過callable和future或futuretask結合來獲取線程執行后的返回值。實現方法是通過get方法來調用callable的call方法獲取返回值。

其實這種方法本質上不是回調,回調要求的是任務完成以后被調用者主動回調調用者的接口。而這里是調用者主動使用get方法阻塞獲取返回值。

public class 多線程中的回調 {
    //這里簡單地使用future和callable實現了線程執行完后
    public static void main(String[] args) throws ExecutionException, InterruptedException {
        ExecutorService executor = Executors.newCachedThreadPool();
        Future<String> future = executor.submit(new Callable<String>() {
            @Override
            public String call() throws Exception {
                System.out.println("call");
                TimeUnit.SECONDS.sleep(1);
                return "str";
            }
        });
        //手動阻塞調用get通過call方法獲得返回值。
        System.out.println(future.get());
        //需要手動關閉,不然線程池的線程會繼續執行。
        executor.shutdown();
 
    //使用futuretask同時作為線程執行單元和數據請求單元。
    FutureTask<Integer> futureTask = new FutureTask(new Callable<Integer>() {
        @Override
        public Integer call() throws Exception {
            System.out.println("dasds");
            return new Random().nextInt();
        }
    });
    new Thread(futureTask).start();
    //阻塞獲取返回值
    System.out.println(futureTask.get());
}
@Test
public void test () {
    Callable callable = new Callable() {
        @Override
        public Object call() throws Exception {
            return null;
        }
    };
    FutureTask futureTask = new FutureTask(callable);
 
}
}

以上就是關于“java多線程中的回調如何運用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

精河县| 宜春市| 漳浦县| 库伦旗| 克山县| 丰台区| 旺苍县| 泰兴市| 文安县| 巫山县| 孟州市| 北辰区| 洞头县| 平远县| 德保县| 巩留县| 临江市| 崇阳县| 敦煌市| 沿河| 侯马市| 嘉祥县| 南康市| 隆昌县| 巴楚县| 八宿县| 丹寨县| 社旗县| 微山县| 二手房| 曲麻莱县| 揭阳市| 英山县| 台州市| 滦平县| 柏乡县| 丹巴县| 濉溪县| 小金县| 郧西县| 石渠县|