我知道文档说该对象是线程安全的,但这是否意味着所有方法对它的所有访问都是线程安全的?因此,如果我一次从多个线程调用put()并在同一个实例上调用(),那么会发生什么不好的事情吗?
我问,因为这个答案让我第二次猜测:https: //stackoverflow.com/a/22006181/4164238
QueueJava中是否有同步类?我正在寻找类似Vector(已同步)vs ArrayList(不是)的东西,但我没有实现List接口,而是在寻找它来实现Queue.
请注意,没有Collections.synchronizedQueue方法可以包装未同步的队列并使其同步.
我有一个消费者和一个生产者,它从队列中添加和删除Item对象.如果我使用put()和take()方法.我还需要涵盖哪些线程安全问题?这类似于有界缓冲区问题,我只是想知道是否使用阻塞队列代替信号量或监视器的需要.Item对象本身可能需要同步(setter但getter不需要锁定),我是对的吗?最后,我不太确定如何测试它是否是线程安全的,因为我不能同时让两个线程调用,take()因为执行顺序是不确定的.有任何想法吗?谢谢.