Java中的线程安全队列

时间:2013-01-11 14:18:18

标签: java multithreading thread-safety queue

我想实现一个被多个线程命中的队列。

这是堆栈的单例类。

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

因此,写入是高优先级,读取是低优先级。

这可能吗?
理想情况下,如果可能的话,多线程写入而不进行同步将是很好的。

1 个答案:

答案 0 :(得分:21)

为什么要避免同步?可以编写“无锁”结构,但这很容易出错。

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

哦,我错过了关于优先读取写入的一点。您可以使用ReentrantReadWriteLock类来完成此操作。然后你不需要一个线程安全的队列 - 你只需要使用读写锁在外部锁定,具体取决于你是在读还是写。