我有一个
Java线程来处理与Socket的传出通信.我只想让线程运行,而待处理的输出准备发送.说我有一个Stack< String>它保存等待发送的数据,我希望通信线程在向栈中添加某些东西时唤醒,并且当堆栈为空时进入睡眠状态.这是最好的方法?
我看到的选项是
>使用wait()/ notify() – 现在似乎是这种行为的旧方式
>如果有任何要发送的内容,每隔x毫秒执行一次线程检查
每次构建一个新线程(昂贵的)
使线程不断运行(昂贵)
>实现一些线程池或执行器解决方案
任何建议都会很棒:)
解决方法
BlockingQueue
正是你正在寻找的.你的通讯线程在take()上阻塞,当一些其他线程添加/放置时,它将立即被唤醒.