加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 获取线程无限期地等待

发布时间:2020-12-14 16:36:54 所属栏目:Java 来源:网络整理
导读:我有一个 Java线程来处理与Socket的传出通信.我只想让线程运行,而待处理的输出准备发送.说我有一个Stack String它保存等待发送的数据,我希望通信线程在向栈中添加某些东西时唤醒,并且当堆栈为空时进入睡眠状态.这是最好的方法? 我看到的选项是 使用wait()/
我有一个 Java线程来处理与Socket的传出通信.我只想让线程运行,而待处理的输出准备发送.说我有一个Stack< String>它保存等待发送的数据,我希望通信线程在向栈中添加某些东西时唤醒,并且当堆栈为空时进入睡眠状态.这是最好的方法?

我看到的选项是

>使用wait()/ notify() – 现在似乎是这种行为的旧方式
>如果有任何要发送的内容,每隔x毫秒执行一次线程检查
每次构建一个新线程(昂贵的)
使线程不断运行(昂贵)
>实现一些线程池或执行器解决方案

任何建议都会很棒:)

解决方法

BlockingQueue正是你正在寻找的.你的通讯线程在take()上阻塞,当一些其他线程添加/放置时,它将立即被唤醒.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读