91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

西丰县| 龙山县| 宁陕县| 玉屏| 高陵县| 镇平县| 军事| 垦利县| 阿拉尔市| 化州市| 错那县| 西乌珠穆沁旗| 徐州市| 威信县| 阿拉善左旗| 禄丰县| 固原市| 通渭县| 普格县| 三亚市| 九龙城区| 布尔津县| 馆陶县| 新绛县| 抚宁县| 喜德县| 景德镇市| 安达市| 阿拉尔市| 宜兰市| 大冶市| 灌南县| 彰化市| 沂南县| 景宁| 宜丰县| 平安县| 嘉定区| 通江县| 南投市| 望城县|