java 方法的执行时间监控 设置超时(Future 接口)

	public static String main2(final String sql,final int a) {
		String obj = null;
		System.out.println("等待执行的sql==" + sql);
		final ExecutorService executorService2 = Executors.newFixedThreadPool(1);
		Callable<String> call = new Callable<String>() {
			ResultSet res = null;
			PreparedStatement stmt = null; 
			int ab=0;
			@Override
			public String call() throws Exception {
				stmt = getCurrentConnection().prepareStatement(sql);
				if (a==1) {
					res = stmt.executeQuery();
				}else {
					ab=stmt.executeUpdate();
					 
				}
					close(stmt, res);
				
				return "true";
			}
		};
		try {
			Future<String> future = executorService2.submit(call);
			obj = future.get();
		} catch (Exception e) {
			// TODO: handle exception
		}
		executorService2.shutdown();
		if (executorService2.isShutdown()==false) {
			executorService2.shutdownNow();
		}
		return obj;
	}

future 等待完成查询 不用设置等待时间 ,查询和修改方法不一样

java 方法的执行时间监控 设置超时(Future 接口)

import java.util.concurrent.Callable;  
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 FutureTest {  
      
    public static void main(String[] args) {  
        ExecutorService executor = Executors.newSingleThreadExecutor();  
        FutureTask<String> future = new FutureTask<String>(new Callable<String>() {  
  
            @Override  
            public String call() throws Exception {  
                // TODO Auto-generated method stub  
                Thread.sleep(1000);  
                System.out.println("---------aaaa------------");  
                return "aaa";  
            }  
        });  
        executor.execute(future);  
        try {  
            String result = future.get(5000, TimeUnit.MILLISECONDS);  
            System.out.println(result);  
        } 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);  
            executor.shutdown();     
        }  
    }  
}  

future.get()时候 等待查询完成


 

猜你喜欢

转载自my.oschina.net/u/2299924/blog/1832671