17

我想实现一个队列,它被多个线程击中。

这是堆栈在单例类中。

现在,一个简单的解决方案是同步这个?我认为它需要这个作为标准?但是,我想优先写入它。

所以,写是高优先级,读是低优先级。

这可能吗?
理想情况下,如果可能的话,在不同步的情况下由多个线程编写会很棒。

4

1 回答 1

26

为什么要避免同步?可以编写“无锁”结构,但非常棘手且容易出错。

如果我是你,我会使用ArrayBlockingQueueor ConcurrentLinkedQueue(或来自 的其他结构之一java.util.concurrent)让你的生活变得轻松!

哦,我错过了关于优先读取优先于写入的内容。你可以在ReentrantReadWriteLock课堂上做到这一点。那么你就不需要线程安全队列了——你只需根据你是在读还是在写,使用读写锁在外部锁定。

于 2013-01-11T14:20:32.183 回答