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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。