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

前端之家收集整理的这篇文章主要介绍了java – 获取线程无限期地等待前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 Java线程来处理与Socket的传出通信.我只想让线程运行,而待处理的输出准备发送.说我有一个Stack< String>它保存等待发送的数据,我希望通信线程在向栈中添加某些东西时唤醒,并且当堆栈为空时进入睡眠状态.这是最好的方法

我看到的选项是

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

任何建议都会很棒:)

解决方法

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

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

猜你在找的Java相关文章