文档章节

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

青峰Jun19er
 青峰Jun19er
发布于 06/20 11:27
字数 271
阅读 185
收藏 0
	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()时候 等待查询完成


 

本文转载自:https://blog.csdn.net/huidanyige/article/details/48368985

共有 人打赏支持
青峰Jun19er
粉丝 2
博文 29
码字总数 26391
作品 0
南宁
私信 提问
java Future 接口介绍

在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java线程池ExecutorService类配合Future接口来实现。 Future接口是Java标准API的一部分,在java.util.concurrent包中。Future接口...

程序袁_绪龙
2014/11/25
0
0
dubbo 超时设置和源码分析

本文 dubbo 2.6.2 在工作中碰到一个业务接口时间比较长,需要修改超时时间,不知道原理,在网上搜索,看到有人说如果你觉得自己了解了dubbo的超时机制,那么问问自己以下问题: 超时是针对消...

我叫董先森
09/13
0
0
Java并发编程(一)Thread详解

一、概述 在开始学习Thread之前,我们先来了解一下 线程和进程之间的关系: 线程(Thread)是进程的一个实体,是CPU调度和分派的基本单位。 线程不能够独立执行,必须依存在应用程序中,由应用...

王磊的博客
10/09
0
0
java并发编程——FutureTask源码分析

FutureTask的简单示例: FutureTask的应用场景,如果在当前线程中需要执行比较耗时的操作,但又不想阻塞当前线程时,可以把这些作业交给FutureTask,另开一个线程在后台完成,当当前线程将来...

长头发-dawn
09/07
0
0
Java 并发工具包 java.util.concurrent 用户指南

译序 本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。 本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友...

pior
2015/10/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql load data 批量导入使用

最近在研究使用mycat,其中有使用批量数据导入,简单记录一下使用方式。 查看系统属性 mysql>show variables like '%secure%'+--------------------------+-----------------------+| Vari...

FansinZhao
22分钟前
1
0
浅谈React的最大亮点——虚拟DOM

在Web开发中,需要将数据的变化实时反映到UI上,这时就需要对DOM进行操作,但是复杂或频繁的DOM操作通常是性能瓶颈产生的原因,为此,React引入了虚拟DOM(Virtual DOM)的机制。 一、什么是...

peakedness丶
26分钟前
0
0
下一代大数据处理引擎,阿里云实时计算独享模式重磅发布

摘要: 11月14日,阿里云重磅发布了实时计算独享模式,即用户独享一部分物理资源,这部分资源在网络/磁盘/CPU/内存等资源上跟其他用户完全独立,是实时计算在原有共享模式基础上的重大升级。...

阿里云官方博客
30分钟前
1
0
Spring MVC 测试样例

1、需要javax.servlet-api V3.0以上支持 <!--3.0以上版本--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-......

jcc_codingBoy
32分钟前
3
0
kettle增量同步oracle数据到mysql

kettle增量同步oracle数据到mysql 适合表中有更新时间的字段 kettle安装 绿色,下载后解压即可(略), -> Download 连接数据库 需要导入jdbc相关驱动jar包到lib目录(oracle、mysql对应jar...

o00o
37分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部