郁闷的线程关闭及线程触发事件问题。。。
现在觉得,多线程的关闭真是多线程程序中最郁闷的事情。在多线程程序中,有很多特殊的地方,使得平常很正常很自然的事情没办直接做,很是麻烦。
最麻烦的事情就是线程关闭的问题。本来如果线程出现了问题,就把那个线程关闭是很正常的事,但由于关闭的线程就是当前正运行关闭代码的线程,会中断正在做的事,会出现很麻烦的逻辑问题。使得线程关闭要绕好几个圈子,而不能直接关闭。
如果程序中使用了触发事件,那事情就更麻烦了。因为触发的事件的处理过程使用的也是同一个线程,在事件的处理过程中如果不小心,就很可能关闭了正在运行的这个线程,也可能引发各种线程死锁等问题,调试很是困难。
比如我现在就遇到一个问题:当服务器遇到网络故障时,会触发一个事件,由其它类来进行故障处理。本来对于服务器遇到网络故障,我把服务器停掉再重新开启是一个很自然的解决方法,但由于线程问题,这根本不容易做到。因为触发当前事件的正是服务器的线程,如果我停掉了现在的服务器,就把正运行的这个线程停掉了,也就不可能进行什么开启服务器的操作。
这种问题在我的多线程程序中很常见,为解决这种问题就要绕好几个圈子,而不能直接的完成功能,很是麻烦,也大大增加了错误的可能性。
不知道大家写多线程的程序时是如何解决这种问题的?我上面提到的问题有什么比较简单,比较完善的解决方法?