0条评论
还没有人评论过~
如果写好一个多线程的并发应用,各个线程的业务逻辑很可能不一样。如果有线程在死循环内,执行了数据库事务、非事务控制的第三方数据相关程序。
如果在windows中,使用任务管理器结束或者在Linux中使用kill命令(非-9)。如何保证,这些线程正常结束呢?程序以后台模式运行。
如果要正常关闭,需要自己来处理这些线程的同步
windows下可以使用消息处理,linux使用信号signal来处理
大体步骤
1 程序有接收信号的处理程序,如signal 2,接收到这个后比如设置一个旗标 isExit
2 线程中判断这个旗标 isExit ,执行线程结束过程
3 主程序main等待所有的线程结束,有的情况下线程强制退出,但一般不建议
一般是这样处理,才能保证资源的正确释放和处理
你的意思是线程突然中断,导致线程执行的DML事务在数据库中未能提交,导致数据库资源被占用而出现阻塞吗