我知道并发添加到c ++中的stl队列会导致问题,解决这个问题的方法是在所有添加/删除调用周围添加互斥锁。
但我现在用Java编程,我正在使用BlockingQueue。文档只说调用put / take on BlockingQueue对象的线程被隐式阻塞,直到有空间放置/分别采取的东西。但是,它没有提及有关并发put / take调用的任何内容。我需要使用互斥锁来保护它们吗?
答案 0 :(得分:1)
不,阻塞队列是线程安全的。来自the docs:
BlockingQueue实现是线程安全的。所有排队方法都使用内部锁或其他形式的并发控制来原子地实现其效果
答案 1 :(得分:1)