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

我有一个 Java线程来处理与Socket的传出通信.我只想让线程运行,而待处理的输出准备发送.说我有一个Stack< String>它保存等待发送的数据,我希望通信线程在向栈中添加某些东西时唤醒,并且当堆栈为空时进入睡眠状态.这是最好的方法? @H_301_2@我看到的选项是

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

@H_301_2@任何建议都会很棒:)

解决方法

BlockingQueue正是你正在寻找的.你的通讯线程在take()上阻塞,当一些其他线程添加/放置时,它将立即被唤醒. @H_301_2@这种方法有几个优点:您可以拥有多个线程(消费者)共享相同的队列,以增加吞吐量和多个线程(生产者)生成消息(消息传递).

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...