關於java中限定方法執行時間淺析
前兩天專案的測試要求在專案在執行檢索和提交圖片兩個方法,加上一個時間限制來限制方法的執行時間。到時間後要彈出一個提示框,當時聽到這個要求之後心裡有兩個方案,一個是在後臺用定時任務(比較麻煩)。不到山窮水盡時不考慮。另一個是在前端js加個定時器(window.setInterval),但是我們都知道前端定時器是按照週期來的即使加了清除(window.clearInterval(null))也要跑完最後一個週期,不要想著加timeout表示曾經試過並沒用。因為是要到時間之後要彈出個提示框,如果用(window.setInterval),那樣的話會出現彈出框 彈出後一直重新整理直到定時器最後一個週期跑完為止。無意中看到還有個future類(java 1.5以上)。那怎樣使用future類呢,首先新建個方法,在新建的方法里加個內部方法(跟內部類差不多)。這個方法可以看作是你要做限定執行時間的那個方法。記得方法名要改成call主要根callable的型別有關。程式碼如下:
final ExecutorService exec = Executors.newFixedThreadPool(1);
Callable<String> call = new Callable<String>() {
public String call() throws Exception {
//開始執行耗時操作
Thread.sleep(1000 * 15);
return "執行緒執行完成.";
}
};
然後呼叫這個方法程式碼如下
try {
Future<String> future = exec.submit(call);
String obj = future.get(1000 * 10, TimeUnit.MILLISECONDS); //任務處理超時時間設為 1 秒
System.out.println("任務成功返回:" + obj);
} catch (Exception e) {
System.out.println("處理失敗.");
e.printStackTrace();
}
// 關閉執行緒池
exec.shutdown();
}
千萬記得關閉執行緒池。