我想实现一个被多个线程命中的队列。
这是堆栈的单例类。
现在,一个简单的解决方案是同步这个?我认为它需要这个标准吗? 但是,我想优先写入它。
因此,写入是高优先级,读取是低优先级。
这可能吗?
理想情况下,如果可能的话,多线程写入而不进行同步将是很好的。
答案 0 :(得分:21)
为什么要避免同步?可以编写“无锁”结构,但这很容易出错。
如果我是你,我会使用ArrayBlockingQueue
或ConcurrentLinkedQueue
(或来自java.util.concurrent
的其他结构之一),让您的生活变得轻松!
哦,我错过了关于优先读取写入的一点。您可以使用ReentrantReadWriteLock
类来完成此操作。然后你不需要一个线程安全的队列 - 你只需要使用读写锁在外部锁定,具体取决于你是在读还是写。