假设我有一个非线程安全的队列实现。如何使其线程安全(不修改原始代码)?换句话说:
如何编写由常规非线程安全队列支持的SynchronizedQueueWrapper?
Plus:我的队列除了添加,删除,查看和调整大小功能外,还没有实现Collection接口。
答案 0 :(得分:2)
如果您的队列实现Collection
,您只需使用Collections.synchronizedCollection(queue);
即可。否则,我建议您检查the code of synchronizedCollection
并执行类似操作(主要是:通过this
上的互斥锁保护队列中的所有操作。)
请注意,它仍然需要用户正确访问同步队列,例如在迭代期间。