假设线程A尝试将一个元素添加到ConcurrentLinkedQueue,同时线程B尝试将另一个元素添加到同一个ConcurrentLinkedQueue。
这两个项目是否会被添加到队列中,或者我是否会遇到并发问题(比方说,可能只会插入一个)? 我知道这个队列是线程安全的,但我不知道这是否意味着当我从不同的线程同时调用它两次时,我可以认为这个方法也是安全的。
如果没有,那么这种情况下put / offer的方法是否安全?
答案 0 :(得分:0)
您可以安全地从不同的线程向Subscriber
添加元素。所有元素都将在队列中。如果每个线程从两个线程调用ConcurrentLinkedQueue
方法,则队列中将有两个元素。 add()
的界面中没有方法put()
。方法ConcurrentLinkedQueue
与add()
执行相同操作。你可以在源头看到这个
offer()