java判断方法执行时间是否超时

参考: https://blog.csdn.net/qq_29407009/article/details/77892030


    @Test
    public void demo1() {
    
    
        ExecutorService executor = Executors.newSingleThreadExecutor();
        FutureTask<String> future = new FutureTask<String>(new Callable<String>() {
    
    
            public String call() throws Exception {
    
    
                return getResult();
            }
        });
        executor.execute(future);
        try {
    
    
        	// 指定时间内不返回结果就会报 TimeoutException
            String result = future.get(1100, TimeUnit.MILLISECONDS);
            System.out.println("时间充足");
            System.out.println(result);
        } catch (TimeoutException ex) {
    
    
            System.out.println("执行时间超时");
            ex.printStackTrace();
        } catch (Exception e) {
    
    
            System.out.println("方法执行出错");
        }
      executor.shutdownNow();  // 正在执行的任务 立即停止,没有执行的不再执行 
     //  executor.shutdown();   //正在执行任务继续执行,没有执行的不再执行
    }

    // 执行方法
    public String getResult() {
    
    
        try {
    
    
            // 毫秒
            Thread.sleep(1000);
        } catch (Exception e) {
    
    
            e.printStackTrace();
        }
        return "ok";
    }

猜你喜欢

转载自blog.csdn.net/xy3233/article/details/120951765