线程终止

1.Abort方法

  CLR会引发ThreadAbortException异常来强行终止线程,调用Abort后,线程不一定会立即停止,因为系统在结束线程钱要进行代码清理,但是我们并不知道这需要多长的时间,如果清理代码的工作没有结束,可能会出现假死的现象。可以通过在主线程中调用join方法,在join方法中指定等待子线程的时间。在线程t1中调用t2.join(1000)表示:t1在执行到这句代码的时候,会处于阻塞的状态,直到t2结束或者等待时间到了。

注:查阅一些文档资料,以及网上一些博客,都是不建议使用这种方法。

2.定义一个布尔变量

  定义一个布尔变量,在其他线程中根据实际情况来修改变量的值作为传递给该线程是否需要终止的判断条件,而在该线程中判断该条件,以确定是否退出线程。

 1        public void Method1() {
 2             while (true) {
 3                 if (RunSign) {//自定义bool变量
 4                     ...
 5                 }
 6                 else {
 7                     break;
 8                 }
 9             }
10         }

 

posted @ 2015-03-03 13:57  五爷  阅读(197)  评论(0编辑  收藏  举报