java是Android中结束线程的正确方法
我有一个worker Thread
,它与一个Handler
关联。Handler
接收Message
并在workerThread
中执行一些操作。我想“停止”我的{Activity
的onPause()
方法中,我向我的Handler
发送一条退出消息,这样我的工作者Thread
将脱离Looper.loop()
并从run()
返回
- 这是阻止
Thread
的正确方法吗?若否,应如何进行李> - 我看到一些代码示例从主
Thread
调用t1.join()
,其中t1是它们的工作者Thread
。join()
的目的是什么李>- 在我的示例中,是否需要执行
join()
李>
我的工人Thread
:
class WorkerThread extends Thread {
private static final int QUIT = -1;
public Handler mHandler;
public void run() {
Looper.prepare();
mHandler = new Handler() {
public void handleMessage(Message msg) {
// do stuff
if(msg.what == QUIT){
Looper.myLooper().quit();
}
// do stuff
}
};
Looper.loop();
}
}
# 1 楼答案
我没有在android上工作过,但在java中,线程可以通过以下方式停止:
使用易失性布尔标志-在循环中使用此标志(while(标志))。它一直在运行,直到旗帜是真的。如果要停止线程,请将标志设置为false
检查中断标志——线程类中有静态布尔方法作为线程。interrupted()检查中断标志。您可以通过调用线程来中断等待的线程。中断()
Join()方法-Join方法使当前线程等待线程死亡。当你有一些逻辑只有在一个线程完成它的执行后才能执行时,就会用到这个方法。所以你不能使用join来停止一个线程,而是让一个线程等待另一个线程完成
希望有帮助。谢谢