1. 程式人生 > >Java實現限定方法執行時間-java 1.5以上的Future類可以執行超時處理

Java實現限定方法執行時間-java 1.5以上的Future類可以執行超時處理

  • 開發場景中有是需要對響應時間較長的介面或者方法進行處理,比如跳過繼續執行,或者其它的方式,這個可以使用Future實現:
  • 程式碼
// 設定BI返回資料最長時間,如果超過此時間則跳過
        Callable<String> call = new Callable<String>() {
            public String call() throws Exception {
                // 開始執行耗時操作
                // Thread.sleep(1000 * 5);
                // return "執行緒執行完成.";
// 響應時間較長的方法或介面呼叫,返回String型別 return getRecCourses(params); } }; try { ExecutorService exec = Executors.newFixedThreadPool(1); Future<String> future = exec.submit(call); // csvData為call方法裡的返回值,也就是我們方法的返回值
csvData = future.get(1000 * 1, TimeUnit.MILLISECONDS); // 任務處理超時時間設為 1 秒 } catch (TimeoutException ex) { // 捕獲超時異常,超時處理,可以通過ex丟擲異常,如果不丟擲,則控制檯不輸出異常。 csvData = null; LogUtil.warn(Module.COURSE, getClass(), "getCourseRecFromBI", "請求Bi推薦課程資料超時,使用原來推薦系統"ex); } catch
(Exception e) { csvData = null; LogUtil.warn(Module.COURSE, getClass(), "getCourseRecFromBI", "請求Bi推薦課程資料失敗,使用原來推薦系統"); }