gpt4 book ai didi

java - 在 Android 中结束线程的正确方法

转载 作者:行者123 更新时间:2023-12-03 12:47:55 29 4
gpt4 key购买 nike

我有一个 worker Thread 和一个与之关联的 HandlerHandler 接收 Message 并在 worker Thread 中执行一些操作。我想在 ActivityonPause() 中“停止”Thread。在我的 ActivityonPause() 方法中,我向我的 Handler 发送了一条退出消息,以便我的工作人员 Thread 将跳出 Looper.loop() 并从 run() 返回。

  1. 这是停止 Thread 的正确方法吗?如果不是,应该怎么做?
  2. 我看到过从主 Thread 调用 t1.join() 的代码示例,其中 t1 是它们的 worker Thread
    • join() 的目的是什么?
    • 我的示例中是否需要执行 join()

我的 worker 线程:

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 中可以通过以下方式停止线程 -

  1. 使用可变 boolean 标志 - 在循环 (while(flag)) 中使用此标志。一直运行直到标志为真。如果要停止线程,请将标志设置为 false。

  2. 检查中断标志 - 您在线程类中有静态 boolean 方法作为 Thread.interrupted() 检查中断标志。您可以通过调用 Thread.interrupt() 来中断等待的线程。

Join() 方法 - Join 方法使当前线程等待一个线程死亡。当您有一些仅在线程完成执行后才执行的逻辑时,会使用这种情况。所以你不能使用 join 来停止一个线程,而是让一个线程等待另一个线程完成。

希望对您有所帮助。谢谢

关于java - 在 Android 中结束线程的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34974863/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com