java並發編程實戰 筆記:任務執行__java

來源:互聯網
上載者:User

excutor架構

excutor架構將任務的提交和執行分離開,任務提交會遍布到程式的各個地方,但執行策略的設定可以在一個地方,如用線程池執行還是串列執行,線程池固定長度還是變長,所有顯示地使用new Thread(task)的地方都應該考慮下excutor架構

攜帶結果的任務callable和future

線程執行任務的構建有三種方法,1. 繼承thread。2. 實現runnable介面。3. 實現callable介面。callable的抽象能有一個傳回值表示任務的結果,在excutor裡提交callable任務,可以返回Future對象,Future對象封裝了整個任務的生命週期,可以擷取傳回值。

任務執行異常

Future的get擷取callable執行結果,會拋出In'te'rru'p'tedException,ExcutionException,Can'ce'lationException,TimeoutException

當任務中有異常拋出的時候,調用Future的get擷取結果的時候,會拋出ExcuteException,可以調用e.getCause擷取真正的異常。

CompletionService

如果有多個並行任務,在擷取結果的時候一個個調用對應的Future的get,如果需要先完成的先處理,則這種方式無法做到。可以使用CompletionService,內部會關聯一個excutor用來提交任務,調用CompletionService的take方法來返回已完成任務的Future結構

為任務設定時限

Future的get方法可以設定timeout,還可以調用cancel方法(一般在timeout後會調用cancel方法)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.