從線程列表中刪除節點的線程安全方法。如何提高以下java方法從鏈表中刪除元素的性能
public void delete(String x, LinkedList<String> list)
{
String lock = "false";
for (int i = 0; i < list.size(); i++) {
synchronized (lock) {
if (list.get(i).equals(x)) {
lock = "true";
list.remove(i);
}
lock = "false";
}
}
}
非常感謝!
編輯:上述方法是線程安全的,但其性能需要改進。這是一個面試問題。
,這可能是更適合於[代碼審查](http://codereview.stackexchange.com/) –
內部*循環絕對不能進入同步塊*。這同時對性能**和**線程不安全是不利的。 –
這是真的關於多個線程還是你得到一個異常,因爲你正在從列表中刪除而迭代呢? – Gray