FutureTask 示例
生活随笔
收集整理的這篇文章主要介紹了
FutureTask 示例
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、簡(jiǎn)單示例
2、泡茶
?
1、簡(jiǎn)單示例
// 創(chuàng)建 FutureTask FutureTask<Integer> futureTask = new FutureTask<>(()-> 1+2); // 創(chuàng)建并啟動(dòng)線程 Thread t1 = new Thread(futureTask); t1.start();// 獲取計(jì)算結(jié)果(阻塞主線程,等待結(jié)果...) Integer result = futureTask.get(); System.out.println("result=" + result);2、泡茶
// 創(chuàng)建任務(wù) T2 的 FutureTask FutureTask<String> ft2 = new FutureTask<>(new T2Task()); // 創(chuàng)建任務(wù) T1 的 FutureTask FutureTask<String> ft1 = new FutureTask<>(new T1Task(ft2)); // 線程 T1 執(zhí)行任務(wù) ft1 Thread T1 = new Thread(ft1); T1.start(); // 線程 T2 執(zhí)行任務(wù) ft2 Thread T2 = new Thread(ft2); T2.start(); // 等待線程 T1 執(zhí)行結(jié)果 System.out.println(ft1.get());任務(wù)類(lèi)
//T1Task 需要執(zhí)行的任務(wù): //洗水壺、燒開(kāi)水、泡茶 class T1Task implements Callable<String>{private FutureTask<String> futureTask;//T1 任務(wù)需要 T2 任務(wù)的 FutureTaskpublic T1Task(FutureTask<String> ft2){this.futureTask = ft2;}@Overridepublic String call() throws Exception {System.out.println("T1: 洗水壺...");TimeUnit.SECONDS.sleep(1);System.out.println("T1: 燒開(kāi)水...");TimeUnit.SECONDS.sleep(15);//獲取 T2 線程的茶葉String tf = futureTask.get();System.out.println("T1: 拿到茶葉:"+tf);System.out.println("T1: 泡茶...");return " 上茶:" + tf;} }//T2Task 需要執(zhí)行的任務(wù): //洗茶壺、洗茶杯、拿茶葉 class T2Task implements Callable<String> {@Overridepublic String call() throws Exception {System.out.println("T2: 洗茶壺...");TimeUnit.SECONDS.sleep(1);System.out.println("T2: 洗茶杯...");TimeUnit.SECONDS.sleep(2);System.out.println("T2: 拿茶葉...");TimeUnit.SECONDS.sleep(1);return " 龍井 ";} }?
總結(jié)
以上是生活随笔為你收集整理的FutureTask 示例的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Java并发编程实战~volatile
- 下一篇: mipony linux客户端,Mipo