怎样干净又安全的终止线程的方法

如何“干净”地结束掉正在执行的线程?---急!!!
[问题点数:100分,结帖人FoxBryant]
如何“干净”地结束掉正在执行的线程?---急!!!
[问题点数:100分,结帖人FoxBryant]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年4月 VC/MFC大版内专家分月排行榜第一
2012年5月 VC/MFC大版内专家分月排行榜第二2012年3月 VC/MFC大版内专家分月排行榜第二2011年7月 VC/MFC大版内专家分月排行榜第二2011年1月 VC/MFC大版内专家分月排行榜第二2010年12月 VC/MFC大版内专家分月排行榜第二2010年9月 VC/MFC大版内专家分月排行榜第二2010年6月 VC/MFC大版内专家分月排行榜第二2010年5月 VC/MFC大版内专家分月排行榜第二2010年4月 VC/MFC大版内专家分月排行榜第二
2012年4月 VC/MFC大版内专家分月排行榜第一
2012年5月 VC/MFC大版内专家分月排行榜第二2012年3月 VC/MFC大版内专家分月排行榜第二2011年7月 VC/MFC大版内专家分月排行榜第二2011年1月 VC/MFC大版内专家分月排行榜第二2010年12月 VC/MFC大版内专家分月排行榜第二2010年9月 VC/MFC大版内专家分月排行榜第二2010年6月 VC/MFC大版内专家分月排行榜第二2010年5月 VC/MFC大版内专家分月排行榜第二2010年4月 VC/MFC大版内专家分月排行榜第二
2012年12月 总版技术专家分月排行榜第一2012年10月 总版技术专家分月排行榜第一2012年9月 总版技术专家分月排行榜第一2012年8月 总版技术专家分月排行榜第一
2012年11月 总版技术专家分月排行榜第三
2011年 总版技术专家分年内排行榜第三2010年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第五
本帖子已过去太久远了,不再提供回复功能。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&安全的等待线程结束(安全结束线程的方法)-c/c++-电脑编程网安全的等待线程结束(安全结束线程的方法)作者:佚名 和相关&&
安全结束线程的方法
作者:JQB EMail:
1.等待处的代码为:
if( NULL !=&线程指针 )
{
&&&& if( NULL !=&线程结束事件 )
&&& &{
&&&&&&& SetEvent(&线程结束事件 );
&&&&&&& if( NULL !=&线程句柄 )
&&&&&&& {
&&&&&&&&&& DWORD dwWait = 2;
&&&&&&&&&& while( ( dwWait = ::WaitForSingleObject( 线程句柄, 100 ) ) == WAIT_TIMEOUT )
&&&&&&&&& { Sleep( 200 ); }&&
&&&&&&&&&&&&线程指针&= NULL;
&&&&&&&& }
&&&&&}
&}
&2.线程中的代码为:
&while( 1 )
&{
&&& ......
&&& if( WaitForSingleObject( 线程结束事件, 0 ) == WAIT_OBJECT_0 )&&& {&&&&&&& ResetEvent(&线程结束事件 );&&&&&&& &&&&&&& }&&& else&&& {&&&&&&&&& &}
&&& ......
&}
相关资料:|||||||安全的等待线程结束(安全结束线程的方法)来源网络,如有侵权请告知,即处理!编程Tags:                &                    请教如何安全的终止一线程?
[问题点数:60分,结帖人kacy16]
请教如何安全的终止一线程?
[问题点数:60分,结帖人kacy16]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
2009年7月 总版技术专家分月排行榜第二2009年3月 总版技术专家分月排行榜第二2009年1月 总版技术专家分月排行榜第二2005年7月 总版技术专家分月排行榜第二2005年5月 总版技术专家分月排行榜第二2005年3月 总版技术专家分月排行榜第二
优秀小版主2015年8月优秀小版主2015年9月优秀小版主2015年5月优秀小版主2015年2月论坛优秀版主
本帖子已过去太久远了,不再提供回复功能。多线程问题。某个线程崩溃了,程序无法终止的问题。 - 开源中国社区
当前访客身份:游客 [
当前位置:
如题。我的程序创建了10个线程,程序运行一段时间后就会报错
“Exception in thread "线程名" java.lang.OutOfMemoryEror: Java heap space”
我查了下可以设置eclipse的配置文件改善,不过修改过之后运行一段时间仍然报错。
由于程序终止的条件最后是空闲进程数量=10。这样子程序便无法终止,请问有什么办法解决这个问题呢?
整个代码逻辑是
for(10个数据)
A a = new A();
a.b(data);
其中,创建线程是A的b方法来做的。卡在那里之后,整个程序卡住不动了。
我试过这个方法,给每个for循环一个最大的时间,比如10分钟,如果还没执行完就执行下一个数据操作。但是经过试验发现,如果出现了上述的Exception,下一个数据也无法操作。
现在程序只能执行1小时左右,便会卡住。
请问造成这种情况的原因是什么呢?是因为调用完b方法只会我没有特地去关闭每一个线程吗?如果是,应该怎么实现呢?如果不是,这个地方怎么处理比较好。
共有9个答案
<span class="a_vote_num" id="a_vote_num_
只有十个线程处理数据?还是每次都创建10个线程?
十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了?
线程安全方面,你还需要多考虑考虑
<span class="a_vote_num" id="a_vote_num_
内存泄露,可能是你的的工作方法里创建的线程,对象等东西没有得到释放
解决方法:检查你的程序资源有没有被复用:线程可以用线程池,对象可以用对象池
<span class="a_vote_num" id="a_vote_num_
引用来自“linxyz”的评论
只有十个线程处理数据?还是每次都创建10个线程?
十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了?
线程安全方面,你还需要多考虑考虑
应该是每new一个新的a就会去创建10个线程,我想了下,每一个循环之后好像没有去关闭线程,线程应该是挂起状态?只是还是不知道怎么处理啊..
<span class="a_vote_num" id="a_vote_num_
引用来自“linxyz”的评论
只有十个线程处理数据?还是每次都创建10个线程?
十分钟没处理完就处理下一个数据,怎么会抛出异常?处理完数据后,线程是处于挂起状态,还是线程结束了?
线程安全方面,你还需要多考虑考虑
引用来自“elvissss”的评论应该是每new一个新的a就会去创建10个线程,我想了下,每一个循环之后好像没有去关闭线程,线程应该是挂起状态?只是还是不知道怎么处理啊..
线程的处理方式是:run方法执行完后,线程就结束了,除非你在run方法里写了死循环。
我猜想你的需求是十个(或多个)线程同时处理一批数据。
如果是这样的话,你应该是启动十个线程伺机等待分配数据,数据来了就处理,处理后再进入等待状态,这样即可保证同时有十个线程在处理,也不会额外创建多的线程。还有一种方式就是数据来了就创建十个线程,线程处理完数据后就直接结束线程。
<span class="a_vote_num" id="a_vote_num_
程序设计就有问题,去查查JAVA的ThreadPoolExecutor,ScheduledThreadPoolExecutor等几个类
<span class="a_vote_num" id="a_vote_num_
看看这样作能停止么。
<span class="a_vote_num" id="a_vote_num_
先用jmap 拿到dump文件 进行分析
<span class="a_vote_num" id="a_vote_num_
引用来自“茶壶”的评论
看看这样作能停止么。
线程写成死循环了它一直在抓数据,虽然调用它的程序已经结束了。后来把这里修改了下,昨晚上运行了有个6、7小时。报了这个错,貌似不是程序本身的问题了?
和数据库的连接关闭了..
com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed due to underlying exception/error:
<span class="a_vote_num" id="a_vote_num_
引用来自“茶壶”的评论
看看这样作能停止么。
 Mysql服务器默认的“wait_timeout”是8小时,也就是说一个connection空闲超过8个小时,Mysql将自动断开该connection。
好像应该connection.close一下..
--- 共有 1 条评论 ---
哈哈,本来以为没有什么来着是吧。
(1年前)&nbsp&
更多开发者职位上
有什么技术问题吗?
elvisss...的其它问题
类似的话题

我要回帖

更多关于 终止当前线程的运行 的文章

 

随机推荐