Java 5 中提供了 ConcurrentLinkedQueue 来简化并发操作。但是有一个问题:使用了这个类之后是否意味着我们不需要自己进行任何同步或加锁操作了呢?
我在网上找到了这个:http://stackoverflow.com/questions/435069/java-util-concurrentlinkedqueue/435941 // StackOverflow果然是个好地方啊……
也就是说,如果直接使用它提供的函数,比如:queue.add(obj); 或者 queue.poll(obj);,这样我们自己不需要做任何同步。但如果是非原子操作,比如:
我们很难保证,在调用了isEmpty()之后,poll()之前,这个queue没有被其他线程修改。所以对于这种情况,我们还是需要自己同步:

探讨了Java5中ConcurrentLinkedQueue的使用方法及注意事项,指出直接使用其内置方法时无需额外同步,但对于复合操作仍需手动同步。
227

被折叠的 条评论
为什么被折叠?



