我試圖在Java中實現一個雙鎖併發隊列,但是我無法讓它通過自動化測試。請讓我知道在我的代碼中的錯誤:實現雙鎖併發隊列
private static class Link<L> {
L val;
Link<L> next;
Link(L val) { this.val = val; this.next = null; }
}
T v;
private Link<T> initNode = new Link<T> (v);
private Link<T> first = initNode;
private Link<T> last = initNode;
public void enque(T val) {
Link<T> newLink = new Link<T> (val);
synchronized (this.last) {
last.next = newLink;
last = newLink;
}
}
public T deque() {
synchronized (this.first) {
Link<T> new_head = first.next;
if (new_head == null)
return null;
T rtnVal = new_head.val;
first = new_head;
return rtnVal;
}
}
這功課嗎? – 2010-11-16 21:00:42
如果我沒有用任意節點初始化隊列,我會在synchronized()部分獲得NullPointerException。 – segfault 2010-11-16 21:03:08
@Mike:是的,但所有的代碼都是我自己編寫的。 – segfault 2010-11-16 21:03:51