1. 程式人生 > >java設定一段程式碼執行的超時時間的簡單方法

java設定一段程式碼執行的超時時間的簡單方法

最近有需求說設定es搜尋查詢不能超時配置檔案的毫秒數,所以正好使用的ExecutorService類,下面就

ExecutorService使用做記錄:

ResultData resultData = null;

ExecutorService executor = Executors.newCachedThreadPool();

FutureTask<ResultData> future = new FutureTask<ResultData>(new Callable<ResultData>() {// 使用Callable介面作為構造引數

public

ResultData call() throws ServiceException {

// 真正的任務在這裡執行,可以為任意型別

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