Java Android中结束线程的正确方法
我有一个workerJava Android中结束线程的正确方法,java,android,multithreading,Java,Android,Multithreading,我有一个worker线程,它与一个处理程序关联。处理程序接收消息s并在worker线程中执行一些操作。我想“停止”我的活动的onPause()中的线程。在我的活动的onPause()方法中,我向我的处理程序发送一条退出消息,这样我的工作线程将脱离Looper.loop()并从运行()返回 这是停止线程的正确方法吗?若否,应如何进行 我看到一些代码示例从主线程调用t1.join(),其中t1是它们的工作线程线程。 join()的目的是什么 在我的示例中,是否需要执行join() 我的工作线程线
线程
,它与一个处理程序
关联。处理程序
接收消息
s并在worker线程
中执行一些操作。我想“停止”我的活动的onPause()
中的线程。在我的活动的onPause()
方法中,我向我的处理程序发送一条退出消息,这样我的工作线程将脱离Looper.loop()
并从运行()
返回
这是停止线程的正确方法吗?若否,应如何进行
我看到一些代码示例从主线程调用t1.join()
,其中t1是它们的工作线程线程。
join()
的目的是什么
- 在我的示例中,是否需要执行
join()
我的工作线程线程:
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();
}
}
我没有在android上工作过,但在java中,线程可以通过以下方式停止-
使用易失性布尔标志-在循环中使用此标志(while(标志))。它会一直运行直到旗子为真。如果要停止线程,请将标志设置为false
检查中断标志-在thread类中有一个静态布尔方法thread.interrupted(),用于检查中断标志。您可以通过调用thread.interrupt()来中断正在等待的线程
Join()方法-Join方法使当前线程等待线程死亡。当您有一些逻辑只有在线程完成其执行后才能执行时,就可以使用这种方法。因此,您不能使用join停止线程,而是让线程等待另一个线程完成
希望能有帮助。谢谢