线程终止 Thread.join()

今天看到一个线程终止的方式:

 	 thread.isRunning = false;  
         try {  
             thread.join();  
         } catch (InterruptedException e) {  
             e.printStackTrace();  
         }  

线程终止,大多数人的建议是,设置一个标志位isRunning 判断线程是否该停止运行,放在while循环里,要终止时,设置isRunning= false;即可。线程会自动执行完run方法后退出。

所以我也一直只是把isRunning设置成了false,就完事了。

今天看到上面的代码,觉得更优。因为只是设置isRunning = false,在某些需要同步的情况下,线程仍可能在执行;

如上面的代码放在activity的ondestory里,只执行了isRunning = false,线程若已进入循环,仍可能会执行一些语句。所以加上thread.join();等待执行完了之后再destory的话,代码更优。


附:http://www.cnblogs.com/SkySoot/archive/2012/06/27/2566004.html

我的理解:  执行thread.join()方法,就是需要等thread执行完之后,才能执行别的线程。

Thread.Join() 方法

MSDN的解释:Blocks the calling thread until a thread terminates

1. 什么是 the calling thread?

2. 什么是 a thread?

运行一个程序,即开启了一个进程和至少一个线程,干活的是线程而非进程!the calling thread 我们可以认为是MainThread(或者调用线程的线程,是不是有点绕?呵呵),a thread 我们就认为是被调用的线程。

最后,我们可以这样翻译MSDN:当 a thread 调用Join方法的时候,MainThread 就被停止执行,直到 a thread 线程执行完毕。

你可能感兴趣的:(android)