gpt4 book ai didi

java - 让线程无限期等待

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:55:59 30 4
gpt4 key购买 nike

我有一个 Java Thread它处理与 Socket 的传出通信.我只希望线程在有待发送的待处理输出时运行。假设我有一个 Stack<String>保存等待发送的数据,我希望通信线程在堆栈中添加内容时唤醒,并在堆栈为空时进入休眠状态。最好的方法是什么?

我看到的选项是;

  1. 使用 wait()/notify() - 现在似乎是实现这种行为的旧方法
  2. 让线程每 x 毫秒检查一次是否有任何要发送的内容
  3. 构建一个新的 Thread每次(昂贵的)
  4. 让线程持续运行(代价高昂)
  5. 实现一些线程池或执行器解决方案

任何建议都会很棒 :)

最佳答案

BlockingQueue正是您要寻找的。您的通信线程在 take() 上阻塞,并在其他线程执行 add/put 时立即被唤醒。

这种方法有几个优点:您可以让多个线程(消费者)共享同一个队列以增加吞吐量,并让多个线程(生产者)生成消息(消息传递)。

关于java - 让线程无限期等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6995369/

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