Java 中的线程安全队列

2022-09-03 01:09:12

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

这是堆栈位于单例类中。

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

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

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


答案 1

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

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

哦,我错过了关于将读取优先于写入的一点。你可以用类来做到这一点。然后,您不需要线程安全队列 - 您只需使用读写锁进行外部锁定,具体取决于您是读取还是写入。ReentrantReadWriteLock


答案 2

推荐