Java任務逾時處理機制實現__Java

來源:互聯網
上載者:User
1問題描述

    在應用軟體的開發中,經常會遇到這樣的一種需求:需要實現一個方法來執行某種任務,而這個方法的執行時間不能超過指定值,如果逾時,則調用者不管這個方法將來是否可能執行成功,都要中斷它的執行,或者讓這個方法返回。這就是逾時處理問題。

    根據執行任務的方法是否非同步,可以把問題從兩個方面分析:如果方法順序執行,則方法執行時整個程式的控制權在執行任務的方法中,方法調用者對於任務的逾時無能為力,只能寄希望於執行任務的方法能夠在任務的每輪迴圈中判斷是否逾時,以便隨時自己返回;如果任務方法非同步執行,即執行任務的方法是另一個線程,則可以通過主線程和任務線程的線程間協作來實現任務線程的逾時中斷處理。 2解決方案

    根據上面對問題的分析,可以提出三種解決方案,一種同步的解決方案和兩種非同步解決方案。 2.1串列逾時處理

    串列逾時處理是指程式只有一個線程,調用者調用任務方法,完全由執行任務的方法本身進行逾時處理。

    這種方案通常要求任務需要迴圈執行,每個迴圈內的計算較複雜,執行時間較長或者不確定。執行任務的方法在規劃任務演算法代碼的同時還要考慮逾時的時候能夠退出。通常的代碼架構如下:

1 public void runTask(long timeout){
2         long beginTime=System.currentTimeMillis();
3         //任務執行準備
4         //如下為任務演算法執行
5         while((System.currentTimeMillis()-beginTime<timeout)&&(任務自身的邏輯判斷)){

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.