furure介面實現執行緒直接資料的互動(runnable介面不可以,因為runnable介面的run方法返回值是void)
callable實現的未來任務
1 未來任務的get()方法會阻塞主線程的執行(主線程需要得到未來任務的返回值)
2 乙個任務不能被反覆執行,如果想反覆執行,必須重新設定新任務
**比對程式
main
可以根據當前使用者輸入的商品名稱,同時查詢**京東天貓的該商品的**(並行),然後將查詢結果返回給main主線程,在主線程中列出不同商店的商品**列表
public class myshoptest
}
public class mycallabledemo implements callable
@override
public double call() throws exception else if(shop.equals("jd"))else if(shop.equals("tmall"))
return price;
}}
執行結果:
1.ruuable介面是多執行緒必須實現的介面,callable介面不是
2.callable規定的方法是call(),runnable規定的方法是run().
3.callable的任務執行後可返回值,而runnable的任務是不能返回值得
4.call方法可以丟擲異常,run方法不可以
5.執行callable任務可以拿到乙個future物件,future 表示非同步計算的結果。它提供了檢查計算是否完成的方法,以等待計算的完成,並獲取計算的結果。計算完成後只能使用 get 方法來獲取結果,如果執行緒沒有執行完,future.get()方法可能會阻塞當前執行緒的執行;如果執行緒出現異常,future.get()會throws interruptedexception或者executionexception;如果執行緒已經取消,會跑出cancellationexception。取消由cancel 方法來執行。isdone確定任務是正常完成還是被取消了。一旦計算完成,就不能再取消計算。如果為了可取消性而使用 future 但又不提供可用的結果,則可以宣告future> 形式型別、並返回 null 作為底層任務的結果。
建立執行緒得方法之一 實現Callable介面
callable介面 實現call方法。與runnable相比,callable功能更強大 相比run 方法,可以有返回值 方法可以丟擲異常 支援泛型的返回值 需要借助futuretask類,比如獲取返回結果 如何用 numthread numthread new numthread numthre...
JUC學習之CountDownLatch 閉鎖
1.什麼是countdownlatch 乙個同步輔助類,在完成一組正在其他執行緒中執行的操作之前,它允許乙個或者多個執行緒一直等待,在jdk1.5之後提供 2.什麼是閉鎖?在完成某些運算時,只有其他多有執行緒的運算全部完成,當前運算才繼續執行 上 public class testcountdown...
JUC學習之CountDownLatch入門
官網的介紹如下 countdownlatch 允許乙個或多個執行緒等待直到在其他執行緒中執行的一組操作完成的同步輔助。countdownlatch用給定的計數初始化。await方法阻塞,直到由於countdown 方法的呼叫而導致當前計數達到零,之後所有等待執行緒被釋放,並且任何後續的await 呼...