强制终止正在运行的线程

时间:2011-11-03 08:46:19

标签: android android-emulator

我正在构建一个应用程序,在一个活动中,我使用2个线程,

1-main thread,
2-other thread

现在在某些情况下我想强制杀死另一个线程,这样只有我的主线程才能工作..

目前我正在使用它:

if(other_thread!=null)
   other_thread.interrupt();

但在interrupt()方法中,当主线程完成其任务时,其他线程开始执行其任务。我的要求是我的应用程序在主线程完成其任务时结束。而不是使用{{1我应该遵循哪些步骤来强行杀死这个other_thread?

2 个答案:

答案 0 :(得分:3)

我不建议您使用interrupt()方法或任何其他线程查杀技术。如果你的内部有一个while循环的线程,你可以通过flag条件的布尔while来控制这个线程。将标志设置为false时,线程将完成其任务。然后,您可以从主线程调用thread.join()以确保其他线程已完成执行。希望这会有所帮助。

这是一个小例子:

boolean flag = true;
Thread secondary = new Thread(new Runnable() {

    @Override
    public void run() {
        while (flag) {
        // do something
        }
    }
});
secondary.start(); //start the thread
flag = false; // this will force secondary to finish its execution
try {
    secondary.join(); // wait for secondary to finish
} catch (InterruptedException e) {
    throw new RuntimeException(e);
}

答案 1 :(得分:0)

我假设你有一个变量使得线程在该条件为真或类似的情况下运行。你可以在该线程中创建一个方法,并将该变量设置为false或类似,以便打破使线程运行的循环。