1. 程式人生 > >關於java中限定方法執行時間淺析

關於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();  
    }  

千萬記得關閉執行緒池。