gpt4 book ai didi

Java 并发 - 应该阻塞还是让步?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:31 24 4
gpt4 key购买 nike

我有多个线程,每个线程都有自己的私有(private)并发队列,它们所做的只是运行一个无限循环,从中检索消息。可能有一个队列在一段时间内(可能几秒钟)没有收到消息,而且它们可能会大量涌入,因此需要快速处理。

我想知道在第一种情况下最适合做什么:使用阻塞队列并阻塞线程直到我有更多输入或执行 Thread.yield()?

我希望在给定时间有尽可能多的 CPU 资源可用,因为并发线程的数量可能会随着时间的推移而增加,但我也不希望消息处理落后,因为无法保证当执行 yield() 时线程将被重新安排执行。我知道硬件、操作系统和其他因素在这里起着重要作用,但抛开这些并从 Java(JVM?)的角度来看,什么是最佳的?

最佳答案

总是阻塞在队列中。 Java 在内部队列中产生。

换句话说:如果您在其中一个线程中让步而不是仅仅阻塞,您将无法在其他线程中获得任何性能优势。

关于Java 并发 - 应该阻塞还是让步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2412364/

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