http://www.java2s.com/Open-Source/Java-Open-Source-
Library/7-JDK/java/java/util/concurrent/ConcurrentLinkedQueue.java.htm
上面是ConcurrentLinkedQueue的源代码。我无法理解一种情况。
条件 (p == q) 如何出现在offer方法的以下代码片段中
public boolean offer(E e) {
checkNotNull(e);
final Node<E> newNode = new Node<E>(e);
for (Node<E> t = tail, p = t;;) {
Node<E> q = p.next;
if (q == null) {
// p is last node
if (p.casNext(null, newNode)) {
// Successful CAS is the linearization point
// for e to become an element of this queue,
// and for newNode to become "live".
if (p != t) // hop two nodes at a time
casTail(t, newNode); // Failure is OK.
return true;
}
// Lost CAS race to another thread; re-read next
}
else if (p == q)
// We have fallen off list. If tail is unchanged, it
// will also be off-list, in which case we need to
// jump to head, from which all live nodes are always
// reachable. Else the new tail is a better bet.
p = (t != (t = tail)) ? t : head;
else
// Check for tail updates after two hops.
p = (p != t && t != (t = tail)) ? t : q;
}
}
还有作者的意思是“我们已经从名单上消失了”
将ConcurrentLinkedQueue
允许在遍历它的内部列表的并发修改。这意味着您正在查看的节点可能已被同时删除。为了检测这种情况,将已删除节点的下一个指针更改为指向其自身。看看updateHead
(L302)了解详细信息。
public static final int ERROR_CODE_SUCCESS = -1; public static final int ERROR_CODE_INTERNAL_ERROR = 0; public static final int ERROR_CODE_INVALID_REQUEST = 1; public static final int ERROR_CODE_NETWO
问题内容: 在使用队列在生产者线程和使用者线程之间进行通信的情况下,人们通常会建议使用或吗? 与另一种相比,使用一种有什么优点/缺点? 从API角度看,我的主要区别是a 可以有选择地限制。 问题答案: 对于生产者/消费者线程,我不确定这是否是一个合理的选择- 它没有实现,这是生产者/消费者队列IMO的基本接口。您必须打电话,如果您什么都没找到,请稍等,然后再次轮询等…导致新项目进入时出现延迟,而新
添加多说 在Django1.5版本前是有内置的评论系统的, 不过现在已经放弃使用了, 在国内比较常用的是多说, 在国外是disqus, 因为文章主要面对 国内用户, 所以采用多说 在网站上注册账号或者直接用社交账号进行登录,并会生成一个short_name, 可以在个人界面中的工具中找到一段通用代码, 这段代码非常重要, 用于多说评论框的代码段: <!-- 多说评论框 start -->
问题内容: 我的代码是: 输出: 请向我解释一下,由于该方法已被覆盖,为什么这个问题的输出是“ b 3”而不是“ b 13”? 问题答案: 您无法在Java中覆盖变量,因此实际上您有两个变量-一in 和in in 。在另一方面的方法是多态的,因而它修改(被调用时,尽管静态类型的存在)。 但最终你访问这个参考使用已知类型的编译过程中解决了,这是。因此从未被感动。 Java中的BTW非最终变量 绝对
问题内容: 如何在Java中使用? 使用此方法,我是否需要担心队列中的并发性?还是只需要定义两种方法(一种方法是从列表中检索元素,另一种方法是将元素添加到列表中)? 注意:显然,这两种方法必须同步。对? 编辑: 我想做的是:我有一类(在Java中),其中一种方法可从队列中检索项目,而另一类具有一种方法可将项目添加至队列。从列表中添加和检索的项目是我自己类的对象。 另一个问题:我需要在remove方
问题内容: 我一直使用类似的接口,通过collection.sort为我的班级提供自然的排序。 基本上,如果我有一个person类,我将获得它来实现Comparable接口并提供compareTo的实现。但是在javadocs中Collections.sort的定义中,我看到了这个签名 我根本不了解这个泛型定义?不应该说 有人可以帮我弄这个吗? 问题答案: 其实,这表示T 可以 实现,而不仅仅是。