gpt4 book ai didi

java - Java 中的多线程帮助

转载 作者:行者123 更新时间:2023-12-01 17:34:26 26 4
gpt4 key购买 nike

我是 Java 新手,我需要一些帮助来处理这个程序。这是一个大型类项目的一小部分,我必须使用多线程。

这是我想要通过算法执行的操作:

while (there is still input left, store chunk of input in <chunk>)
{
if there is not a free thread in my array then
wait until a thread finishes

else there is a free thread then
apply the free thread to <chunk> (which will do something to chunk and output it).
Note: The ordering of the chunks being output must be the same as input
}

所以,我不知道该怎么做的主要事情:

  • 如何检查数组中是否有空闲线程?我知道有一个函数 ThreadAlive,但每次在我的循环中轮询每个线程似乎效率非常低。
  • 如果没有空闲线程,我如何才能等到一个线程结束?
  • 顺序很重要。如何保留线程输出的顺序?如图所示,输出的顺序需要与输入的顺序匹配。如何保证这种同步?
  • 我如何将 block 传递到我的线程?我可以只使用 Runnable 接口(interface)来执行此操作吗?

非常感谢您对这四个项目的任何帮助。因为我是一个 super 菜鸟,所以代码示例会有很大帮助。

(旁注:创建一个线程数组只是我的一个想法,用于处理用户定义的线程数。如果您有更好的方法来处理这个问题,欢迎提出建议!)

最佳答案

听起来你基本上有一个生产者/消费者模型,可以通过 ExecutorService 和 BlockingQueue 来解决。这是一个类似的问题,也有类似的答案:

producer/consumer work queues

关于java - Java 中的多线程帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7899833/

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