【发布时间】:2014-06-25 11:34:35
【问题描述】:
假设我有一个不是线程安全的队列实现。如何使其线程安全(不修改原始代码)?换句话说:
如何编写由常规非线程安全队列支持的 SynchronizedQueueWrapper?
另外:我的队列除了add、remove、peek和size函数外没有实现Collection接口。
【问题讨论】:
标签: java thread-safety queue
假设我有一个不是线程安全的队列实现。如何使其线程安全(不修改原始代码)?换句话说:
如何编写由常规非线程安全队列支持的 SynchronizedQueueWrapper?
另外:我的队列除了add、remove、peek和size函数外没有实现Collection接口。
【问题讨论】:
标签: java thread-safety queue
如果您的队列实现了Collection,您可以简单地使用Collections.synchronizedCollection(queue);。否则我建议你检查the code of synchronizedCollection 并做类似的事情(本质上是:通过this 上的互斥锁来保护队列上的所有操作)。
请注意,它仍然需要用户正确访问同步队列,例如在迭代期间。
【讨论】:
add 方法,第二个线程可能看不到添加(陈旧数据)。