有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个worker Thread,它与一个Handler关联。Handler接收Message并在workerThread中执行一些操作。我想“停止”我的{}的{}中的{}。在我的ActivityonPause()方法中,我向我的Handler发送一条退出消息,这样我的工作者Thread将脱离Looper.loop()并从run()返回

  1. 这是阻止Thread的正确方法吗?若否,应如何进行
  2. 我看到一些代码示例从主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) 个答案

  1. # 1 楼答案

    我没有在android上工作过,但在java中,线程可以通过以下方式停止:

    1. 使用易失性布尔标志-在循环中使用此标志(while(标志))。它一直在运行,直到旗帜是真的。如果要停止线程,请将标志设置为false

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

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

    希望有帮助。谢谢