◆◆◆一个线程的问题,请高手指点!◆◆◆ 你可能需要在你的线程中加入interrupted()的判断,就是while(!this.interrupted()) {...} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是需要楼上的....这里啊我怎么杀啊? 用destroy函数?总是抛出异常啊 基本同意楼上的,线程是没办法杀的,只能在run方法中设定退出条件,让他自己运行完退出比如你新建一个线程时就创建一个boolean全局变量bStopipublic run() while(bStopi) { ... }}然后在想让某个线程停止时,就让bStopi=false;就可以了. 大家误会了,我的主程序是个死循环,而线程不是死循环,所以线程里不能用while() 如果你强制需要从外部关闭线程,只好调用Thread的Deprecated方法stop()了.主进程维护所有子线程的线程池对象,并且进行线程运行时间的维护,到了规定的超时,从外部stop线程(哪怕线程现在还在运行).这倒是一种可以做到的做法.至于还有没有更好的做法,思考中... 线程的中止就是应该用interrupt,stop早就不推荐使用了。至于你说的现成数目不断增加,可能是你的那个线程实例还有别的引用指向它,导致JVM不能回收它造成的。我国我觉得xiaohaiz说的方法也有道理,你可以在线程生成的时候,在线程中加一个定时器,定时器时间到了的时候就中止自己。另外你说的加一个标志位的方法我觉得不可取,这样又要自己加一个轮询任务不断的监控这个标志位。比较好的方法应该是用Thread的wait和notify方法来处理。 stop确实是不再推荐了.问题在于他的线程定时器很可能很难起到作用.如果他的线程正在阻塞在某个方法,定时器可能起不到相应的作用.或者谁有更好的做法一起探讨一下.或者看看是否能做一个定时器.线程的wait和notify方法 优先 考虑于线程轮询标志位. 定时器怎么加?我现在用stop已经把线程的数量控制住了,但是不是说不推荐嘛,还有好方法? 你可以查一查java.util.Timer的相关资料.Timer是jdk1.3之后引入的定时器类.不知道能不能解决你的问题.具体定时器怎么做我还没有尝试过.java.util.Timer extends java.util.TimerThreadjava.util.TimerTask implements java.lang.Runnable在Timer中给出了一系列的scheduler方法用于执行TimerTask.不敢确定这个定时器能否解决你的问题,纯当抛砖引玉了. Calendar 与 GregorianCalendar 有什么区别? 编程中我用哪个? 好东西! JDK是不是跟jbuilder有冲突? 需要计算64位的数据,没有unsign怎么办? 大侠们,请帮忙,要不跳河的心都有呀!是关于如何返回JTabel中的指定行! 大哥帮忙 LINUX下JAVA的初始问题 新手问题! 把String如“2002-10-9 12:11:11”转换为Date格式后为什么就变成英文格式了! 学UML?学JAVA?锻炼锻炼项目管理?分析水平?开发程序水平?好地方就在这里...... 帮我看看这段小程序,照书抄的 请问乘方在java中怎么表示,用^为什么不行呢?
比如你新建一个线程时就创建一个boolean全局变量bStopi
public run()
while(bStopi) {
...
}
}
然后在想让某个线程停止时,就让bStopi=false;就可以了.
这倒是一种可以做到的做法.至于还有没有更好的做法,思考中...
线程的wait和notify方法 优先 考虑于线程轮询标志位.
java.util.Timer extends java.util.TimerThread
java.util.TimerTask implements java.lang.Runnable在Timer中给出了一系列的scheduler方法用于执行TimerTask.
不敢确定这个定时器能否解决你的问题,纯当抛砖引玉了.