我正在构建一个应用程序,在一个活动中,我使用2个线程,
1-main thread,
2-other thread
现在在某些情况下我想强制杀死另一个线程,这样只有我的主线程才能工作..
目前我正在使用它:
if(other_thread!=null)
other_thread.interrupt();
但在interrupt()
方法中,当主线程完成其任务时,其他线程开始执行其任务。我的要求是我的应用程序在主线程完成其任务时结束。而不是使用{{1我应该遵循哪些步骤来强行杀死这个other_thread?
答案 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或类似,以便打破使线程运行的循环。