java 方法超时
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class T { public static void main(String[] args) { // TODO Auto-generated method stub functionTimeout(2000); } public static void theFunction() { try { Thread.sleep(3000); System.out.println("theFunction() End"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println("被终止"); } } public static void functionTimeout(int seconds){ ExecutorService executorService= Executors.newSingleThreadExecutor(); FutureTask<Integer> future=new FutureTask<>(()-> { theFunction(); return 0; } ); executorService.execute(future); try { future.get(seconds,TimeUnit.MILLISECONDS); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ExecutionException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (TimeoutException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { future.cancel(true); executorService.shutdown(); } } }

更多精彩