问题描述:想要合理终止一个线程。目前有一个数据库查询方法 doSomething() ;耗时很久。
想在界面上做一个按钮,在查询过程中可以取消查询。
于是我开启了一个线程来执行doSomething()查询。
但是无法终止线程尝试方法
1 stop(),方法不安全,已经过时,而且调用之后正在执行数据查询中会抛出SqlException2 isInterrupted()
doSometing()里耗时的一句就是
Result rs = statement.executeQuery()这一句在执行查询,程序就在这一直在运行。但并不是阻塞。3 使用线程标记,代码如下,这样做doSomething至少要执行一次,其实我也只是要让他执行一次就够了,而终止操作是希望在一次执行之中。
boolean flag = ture
while( flag )
{
doSomething() ;
}
希望各位给出合适的方案
想在界面上做一个按钮,在查询过程中可以取消查询。
于是我开启了一个线程来执行doSomething()查询。
但是无法终止线程尝试方法
1 stop(),方法不安全,已经过时,而且调用之后正在执行数据查询中会抛出SqlException2 isInterrupted()
doSometing()里耗时的一句就是
Result rs = statement.executeQuery()这一句在执行查询,程序就在这一直在运行。但并不是阻塞。3 使用线程标记,代码如下,这样做doSomething至少要执行一次,其实我也只是要让他执行一次就够了,而终止操作是希望在一次执行之中。
boolean flag = ture
while( flag )
{
doSomething() ;
}
希望各位给出合适的方案
解决方案 »
- 百分求助,在线等,关于JasperReport中String类型输出总是为null
- 【大神求助】关于一个Action跳转extjs的管理页面变为空白页的问题
- 求二进制转16进制的方法
- quartz使用Cron模式是否可以存储?
- tomcat+servlet+userbean问题求解
- webservice调用如何返回一个List包含List的复合对象
- 求助:关于Jws的问题!请牛人出手相助!!!!!!!!
- jb9+weblogic8开发struts,ApplicationResources.properties怎么加啊
- 谁有java api的帮助文档,给我一份?
- 寻求J2EE 入门好书。有电子书最好了,谢谢!!!
- 说一下struts的执行过程及原理
- 用struts2.0做下载遇到的问题,
难不成你要阻塞我的查询线程吗我明白直接stop肯定会带来问题。
强烈建议,在表中建索引,优化SQL,我对线程不是很精通,但是觉得人为终止线程,不太合理。
Result rs = statement.executeQuery()这一句在执行查询,程序就在这一直在运行。但并不是阻塞。---
这个保存起statement对象,在另外一个线程可以调用statement.cancel()中止SQL语句的支持(需要数据库本身支持)
boolean flag = ture
while( flag )
{
doSomething() ;
}
doSomething()应该可以拆分吧?在中间用Flag判断是否break