gpt4 book ai didi

Java线程问题

转载 作者:行者123 更新时间:2023-12-02 07:44:29 25 4
gpt4 key购买 nike

我想通过使用 boolean 字段来停止线程。我已经实现了一些代码来执行此操作,如下所示:

我的线程类是这样的:

public class ParserThread implements Runnable {
private volatile boolean stopped = false;

public void stopTheThread() {
stopped = true;
}
:
:
}

下面是从函数start()开始启动10个线程的主线程

public class Main() {
Thread [] threads;

public void start() {
for(int i = 0; i < 10; i++) {
threads[i] = new Thread(new ParserThread());
}
}

public void stop() {
// code to stop all the threads
}
}

现在我想调用ParserThread的stop方法来设置“stopped = true”来停止线程。我希望这件事对所有 10 个线程都完成。

我如何调用该停止方法。我希望它在 Main 类的 stopAllThreads() 方法中完成。

最佳答案

看看Executor框架。如果您使用 ExecutorService您可以将所有工作作为 Runnables 提交。执行器框架将跟踪所有这些线程,并且所有托管线程都将通过 shutdownNow() 方法接收关闭请求(中断)。

您的线程必须正确处理中断。请参阅this article了解更多信息。

使用 Executor 框架来管理线程集、收集结果、处理异常等通常更容易。

关于Java线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1613435/

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