gpt4 book ai didi

java - 初学者Java多线程问题

转载 作者:行者123 更新时间:2023-11-30 08:44:17 24 4
gpt4 key购买 nike

我在制作 Java 多线程文件爬虫时遇到问题。我的问题是我有一个 workQueue,它是一个 linkedBlockingQueue,其中包含我想用我的线程抓取的文件的名称,每个线程将从 workQueue 中 take() 并扫描file 它可以 put() 将另一个文件名放入 workQueue(这是一个依赖性检查程序)。因此,我永远无法确定工作何时全部完成,并且当所有线程尝试从(最终)空的 workQueue 中获取 take() 时,它们最终会进入等待状态。

所以我想我的问题是,是否有一种有效的方法可以在所有工作完成后(当所有线程都进入等待状态时)终止所有线程?目前,我只是在主线程上使用 sleep(),然后在所有工作线程上使用 interrupt()

抱歉,如果这个问题听起来很困惑。

最佳答案

我以前遇到过这个问题,我找到的唯一方法是向 BlockingQueue 发送一个特殊的标记对象。当 Queue .take() 对象时,如果这是标记,则 Thread 自行结束。

我尝试过其他解决方案,比如唤醒线程并检测异常,但没有成功。

关于java - 初学者Java多线程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33860716/

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