java設定一段程式碼執行的超時時間的簡單方法
阿新 • • 發佈:2019-02-17
最近有需求說設定es搜尋查詢不能超時配置檔案的毫秒數,所以正好使用的ExecutorService類,下面就
ResultData call()
throws ServiceException {
ExecutorService使用做記錄:
ResultData resultData = null;
ExecutorService executor = Executors.newCachedThreadPool();
FutureTask<ResultData> future = new FutureTask<ResultData>(new Callable<ResultData>() {// 使用Callable介面作為構造引數
public
// 真正的任務在這裡執行,可以為任意型別
return storeSESearchService.queryStoreScenesEntrance(rt, tq, rq, null, from, size);
}
});
executor.execute(future);
try {
resultData = future.get(BusinessHuskarConfig.getESSearchTimeOut(), TimeUnit.MILLISECONDS); // 取得結果,同時設定超時執行時間預設為2秒。同樣可以用future.get(),不設定執行超時時間取得結果
} catch (Exception e) {
future.cancel(true);
} finally {
executor.shutdown();
}
newCachedThreadPool:建立一個可快取執行緒池,如果執行緒池長度超過處理需要,可靈活回收空閒執行緒,若無可回收,則新建執行緒。關於Executors提供的四中方法,參考我的上一片文章:http://blog.csdn.net/u012516166/article/details/78251687