gpt4 book ai didi

java - 在java中从父线程杀死子线程

转载 作者:太空狗 更新时间:2023-10-29 16:41:25 33 4
gpt4 key购买 nike

我在 java android 平台上工作。我正在从主线程创建一个子线程。我想停止子线程作为我的要求。我的子线程具有简单的功能,没有任何循环。我想随时终止子线程并释放它正在使用的资源。我搜索了一下,发现了 inturrupt() 函数。我的话题是:

public class childThread implements Runnable{
public void run() {
firstFunction();
secondFunction();
}
}

主线程有这段代码在线程之上启动:

Thread tChild;
tChild = new Thread(new childThread(), "Child Thread");
tChild.start();

我的 run() 函数正在调用这样的函数。如何在其中使用 interrupt()?请告诉我任何其他杀死子线程并释放其资源的方法。

最佳答案

通过线程的协作,您可以使用它支持的任何方法停止该线程。没有线程的合作,就没有办法阻止它。例如,考虑线程是否持有锁并将共享资源置于无效状态。如果没有它的合作,你怎么能停止那个线程?

你有两个选择:

  1. 对您的线程进行编码,使它们不做您不希望它们做的工作。对它们进行编码,以便它们在无事可做时自行终止。这样,他们就不需要其他线程从外部“进入”。

  2. 对您的线程进行编码,以便它们提供某种方式来告知它们应该终止,然后它们干净地终止。

但这些是你的选择——它不能靠魔法起作用。

将一个线程想象成你姐姐借你的车。如果你要还车,需要你姐姐的配合才能拿回来。您可以安排让她在您需要汽车时自己回来,也可以安排让您在需要汽车时告诉她,然后她回来。但你无法改变这样一个事实,即她必须知道如何把车开回来,否则车就回不来了。

线程操纵进程资源并将它们置于无效状态。它们必须在终止之前进行修复,否则进程上下文将会损坏。

关于java - 在java中从父线程杀死子线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17123245/

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