sze*_*fuf 2 java collections concurrency multithreading
我知道经常会问类似的问题,但我找不到任何可以帮助我的东西.
情况是这样的:
问题是:如何复制(我认为最好是复制工作)第二个工人的集合,然后清除原始集合,以确保我们不会丢失任何东西(第一个工人一直在写)但不要保持锁定原始集合尽可能短?
谢谢
如果你使用专门构建的并发工具LinkedBlockingQueue
而不是普通的工具,这种事情会容易得多HashSet
.让生产者向队列中添加元素,并且消费者可以drainTo
根据需要批量提取队列中的元素.不需要任何同步,因为BlockingQueue
实现被设计为线程安全.