就本人知识而言,对线程的关闭一直都不是很顺利
1、通过状态位,程序不正常时,这个很不好使
2、线程阻塞,通过interrupted让线程抛异常
3、I/O阻塞,如果是自己写的相关程序可以通过Socket.close()等方法退出阻塞,但如果是别人封装好的应用呢,实在不知道怎么退出阻塞以上是本人在不同项目中使用并遇到的问题。希望能有大牛能指点迷津,或者大家谈谈各自是怎么解决的。
为方便讨论,我举个例子:
我在一个邮件接收的容器里,开启了10几个线程分别连接不同账号进行邮件接收,经常是运行一段时间后,某些线程就阻塞在那里了,而我没有办法让它退出阻塞,就只能重启容器。
1、通过状态位,程序不正常时,这个很不好使
2、线程阻塞,通过interrupted让线程抛异常
3、I/O阻塞,如果是自己写的相关程序可以通过Socket.close()等方法退出阻塞,但如果是别人封装好的应用呢,实在不知道怎么退出阻塞以上是本人在不同项目中使用并遇到的问题。希望能有大牛能指点迷津,或者大家谈谈各自是怎么解决的。
为方便讨论,我举个例子:
我在一个邮件接收的容器里,开启了10几个线程分别连接不同账号进行邮件接收,经常是运行一段时间后,某些线程就阻塞在那里了,而我没有办法让它退出阻塞,就只能重启容器。
解决方案 »
- 求 关于java7的新特性的相关文章(中文的)url
- 小弟请教高手?? tomcat 在局域网内访问
- 请问这个程序哪出错了?运行不起来唉
- 关于jar打包.
- 初学者问:有没有辅助的工具可以对Api文档进行搜索查询,比如我知道某一方法,输入后能列出包含此方法的所有类。再比如就是知道一个类,想
- 能不能这样做?
- 谁能给我提供一个oracle jdbc driver?
- JSplitPane.setDividerLocation(double)这个API无效?
- Socket中使用Serializable发送出错。
- 那位朋友介绍几个与平台无关的可视化开发工具java,Thanks
- java jawin jacob学习资料
- 怎样才能将jar文件转换成exe文件 求高手!!!!!!!!!!!!!!
直接杀死线程的办法不可取,会导致数据一致性、锁等出现问题
1、建议你在关键位置,研究一下怎样少用阻塞,而不是研究怎样退出阻塞。
2、如果代码没问题,线程应该可以很好的协作,不会一直处于阻塞状态。如果代码有问题,代码的瓶颈应该是哪块代码一直获取对象锁,不让其他线程用。
dingqi
朋友,你一直在说锁、等待,其实这个如果是我自己做,好解决,并发、线程安全这块我还是比较有心得的。
因为多线程、并发这块的应用,一般很少用别人的。所以这块不算是什么大问题。
问题是I/O阻塞,只要是通信相关的都有这个问题,如果是用了别人封装的包,阻塞问题真的是很蛋疼。