社区
Java SE
帖子详情
一个线程需要在任何情况下退出都必须执行一段程序改怎么写?
wsxqaz
2012-09-04 10:06:24
如果线程正常退出当然不会有什么问题,但是现在的问题是线程很可能不能正常退出,而是由其他组件强制断掉的(比如调用interrupt),现在的问题是这个线程会创建一个socket正常退出后会执行close方法,但是非正常退出后就无法预判了。我使用finalize方法但是从说明中看到不能寄希望这个方法一定会执行,但是我这里必须要执行还有什么方法可以
...全文
215
5
打赏
收藏
一个线程需要在任何情况下退出都必须执行一段程序改怎么写?
如果线程正常退出当然不会有什么问题,但是现在的问题是线程很可能不能正常退出,而是由其他组件强制断掉的(比如调用interrupt),现在的问题是这个线程会创建一个socket正常退出后会执行close方法,但是非正常退出后就无法预判了。我使用finalize方法但是从说明中看到不能寄希望这个方法一定会执行,但是我这里必须要执行还有什么方法可以
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
beiouwolf
2012-09-04
打赏
举报
回复
socket这种假设你的程序被关闭了,这条socket也会被自动断掉
java基本上是没有资源清理的问题
实在需要程序钩子的话,有个 Runtime.getRuntime().addShutdownHook(Thread);方法
接收参数是一个线程,这个线程会在程序被终止时自动执行
我一般用ShutdownHook来做一些队列序列化之类的操作
zxhcloth
2012-09-04
打赏
举报
回复
只要是程序让它退出的,不管正常还是非正常都可以通过try..finally里的finally满足你的要求。
但是如果是外界强制退出的,比如kill进程,那是没有办法的。
除非你写个监控程序,一直监控着正运行的进程或线程,当一段时间没响应后(就认为已死或飞正常退出),由这个监控程序去执行你要的操作,不过这也有局限性,有些操作还是不能操作。
MiceRice
2012-09-04
打赏
举报
回复
[Quote=引用 1 楼 的回复:]
run里用try...finally
[/Quote]
支持一把。也就是把所有执行代码放在 try 之内,那些必须负责收尾的代码放在 finally 之内。
龙四
2012-09-04
打赏
举报
回复
如果是用的线程池,可以重写ThreadPoolExecutor的afterExecute方法
龙四
2012-09-04
打赏
举报
回复
run里用try...finally
java
程序
退出
时
执行
java
程序
退出
时
执行
描述 对于
程序
退出
前
执行
特定过程, C++中有析构方法,java中可以使用Runtime中的addShutdownHook(Thread hook) 向JVM注册
一个
关闭的
线程
事件,
程序
一旦结束 时,
线程
hook就会被
执行
,处理最后的事情。
程序
结束是指
程序
自然结束或者System.exit(0)、System.exit(-1) 或者Runtime.getRuntime().exit(-1)、Runtime.getRuntime().exit(0)等。即使是
程序
异常退
多
线程
情况
下,主
线程
先
退出
,子
线程
会被强制
退出
吗
1、进程中
线程
之间的关系
线程
不像进程,
一个
进程中的
线程
之间是没有父子之分的,都是平级关系。即
线程
都是一样的,
退出
了
一个
不会影响另外
一个
。 但是所谓的"主
线程
"main,其入口代码是类似这样的方式调用main的:exit(main(…))。 main
执行
完之后, 会调用exit()。 exit() 会让整个进程over终止,那所有
线程
自然都会
退出
。 2、主
线程
先
退出
,子
线程
继续运行的方法 在进程...
c#
程序
退出
和
线程
退出
编
写
Winform
程序
时,发现在
程序
退出
后,有的
线程
还在运行。 通过网上查看得知
需要
设置
线程
属性,如下
程序
所示: Thread th = new Thread(Get); th.IsBackground = true;//
需要
设置 这个属性的意思就是把
线程
设置为后台
线程
。 然后关闭进程的同时,
线程
也会随之关闭。 IsBackground对
线程
的重要作用 1、当在主
线程
中创建了
一个
线程
,那么该
线程
的IsBackground默认是设置为FALSE的。 2、当主线
python怎么
退出
执行
/
退出
程序
语句
在Python中,
退出
执行
是
一个
常见的操作。如何
执行
了,请参考下面的方法食用
linux
线程
无异常
退出
,记
一个
linux
程序
无提示
退出
问题
1.问题描述
程序
有多个
线程
,主
线程
启动
一个
线程
拉取远端的视频流,在拉取视频流的回调函数里对获取的数据进行处理。主
线程
启动拉流
线程
之后就在 while(1) 中进入睡眠状态,剩下拉流
线程
拉取数据并进行处理。目前遇到的问题是:
程序
运行
一段
时间没有任何提示就
退出
了,按照预期,没有人为干预结束这个
程序
,应该一直运行下去。这个问题是必现的,只是有时候
程序
可以运行一天有时候半个小时,之后就会出现这个现象。从应...
Java SE
62,620
社区成员
307,251
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章