首頁 > Java > java教程 > 主體

java如何實作Callable介面建立執行緒類

PHPz
發布: 2023-05-11 11:58:06
轉載
1009 人瀏覽過

實作Callable 介面建立執行緒類別

從Java5 開始就提供了Callable 接口,該介面是Runnable 介面的增強版,Callable 介面提供一個call() 方法作為執行緒執行體,call()方法可以有回傳值,call() 方法可以宣告拋出例外。

  • boolean cancel(boolean may) 試圖取消該 Future 裡關聯的 Callable 任務。

  • V get() 傳回 Call 任務裡 call() 方法的回傳值。呼叫該方法會照成執行緒阻塞,必須等待子執行緒結束後才會得到回傳值。

  • V get(long timeout,TimeUnit unit) 傳回 Call 任務裡 call() 方法的回傳值。此方法讓程式最多阻塞 timeout 和 unit 指定的時間,如果經過指定的時間,如果經過指定的時間依然沒有回傳值,將會拋出 TimeoutException 例外。

  • boolean isCancelled() 如果在 Callable 任務正常完成前被取消,則傳回 true。

  • boolean isDone() 如果 Callable 任務已完成,則傳回 true。

Runnable的實作步驟:

  1. #建立Callable 介面的實作類,並實作call() 方法,該call()方法作為執行緒的執行體,call() 方法有回傳值。

  2. 使用 FutrueTask 類別包裝 Callable 物件。

  3. 使用 FutrueTask 物件作為Thread 物件的 target 建立並啟動新執行緒。

  4. 啟用 FutrueTask 物件的 get() 方法來獲得子執行緒的回傳值。

<code>public class CallableDemo implements Callable<Integer> {<br>    public static void main(String args[]) {<br>        FutureTask<Integer> futureTask = new FutureTask<Integer>(new CallableDemo());<br>        new Thread(futureTask).start();<br>        try {<br>            System.out.println("子线程返回值:" + futureTask.get());<br>        } catch (InterruptedException e) {<br>            e.printStackTrace();<br>        } catch (ExecutionException e) {<br>            e.printStackTrace();<br>        }<br>        if (futureTask.isDone()) {<br>            System.out.println("线程结束");<br>        }<br>    }<br><br>    @Override<br>    public Integer call() throws Exception {<br>        System.out.println("线程开始");<br>        int ss = 0;<br>        for (int i = 0; i < 20; i++) {<br>            ss += i;<br>        }<br>        return ss;<br>    }<br>}</code>
登入後複製

以上是java如何實作Callable介面建立執行緒類的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板