当前位置: 技术问答>java相关
杀死线程
来源: 互联网 发布时间:2015-10-22
本文导语: 如何在线程外面杀死它??? | 给你搜索了一下!希望对你有帮助: 线程只有如下四种状态:运行,挂起(睡眠),就绪(等待),结束(死亡)。你说的dead就是最后一种,在java中有两种方...
如何在线程外面杀死它???
|
给你搜索了一下!希望对你有帮助:
线程只有如下四种状态:运行,挂起(睡眠),就绪(等待),结束(死亡)。你说的dead就是最后一种,在java中有两种方式,一种是自然结束,一种强制dead,不过为了安全性和稳定性,最好只用第一种。线程运行完了并不代表线程类被回收了,你依然可以再用,再次运行就是。
另外,java中没有提供自行回收对象,这个是由它的垃圾回收器自动回收,你并不知道何时何地进行这样的处理。所以线程完毕,并不代表资源回收,当然除了数据库连接,网络连接,流连接可以close外(这个也要自己进行释放)。如果你不想多余太多的废弃的对象,你可以在结束后,将线程类的主要域设置为null,它们因为而成为弱引用对象,是优先被垃圾回收器回收的。
http://expert.csdn.net/Expert/topic/1061/1061597.xml?temp=.9133417
你去看看可能对你有帮助!
线程只有如下四种状态:运行,挂起(睡眠),就绪(等待),结束(死亡)。你说的dead就是最后一种,在java中有两种方式,一种是自然结束,一种强制dead,不过为了安全性和稳定性,最好只用第一种。线程运行完了并不代表线程类被回收了,你依然可以再用,再次运行就是。
另外,java中没有提供自行回收对象,这个是由它的垃圾回收器自动回收,你并不知道何时何地进行这样的处理。所以线程完毕,并不代表资源回收,当然除了数据库连接,网络连接,流连接可以close外(这个也要自己进行释放)。如果你不想多余太多的废弃的对象,你可以在结束后,将线程类的主要域设置为null,它们因为而成为弱引用对象,是优先被垃圾回收器回收的。
http://expert.csdn.net/Expert/topic/1061/1061597.xml?temp=.9133417
你去看看可能对你有帮助!
|
你说得就是中断它吧,以前Java有一个stop()方法,但是,现在的Java版本已经不赞成使用这个方法,除了这个方法,Java语言中也就没有其它终止线程的内置方法。所以,这需要一个线程的run()方法应该不时的检测自身,来判断是否应该终止。一个线程不应该连续运行,而应不时睡眠或者等待,给其它线程提供运行的机会,但一个处于睡眠状态的线程,不可能自动检测它是否应该终止。这里就需要调用一个interrupt()方法。当调用interrupt()方法作用于一个处于blocked状态的线程对象时,这个方法会抛出InterruptedException异常。中断一个线程会引起它的注意,被中断线程可以通过catch子句放置合适的事件对中断做出反应,这个时候就可以把它看成线程终止的条件。