我有一個簡單的類用鏈表:如何在Java中線程安全地操作列表?
private final LinkedList<Object> list;
如果我有兩種方法操縱這個名單:
public void m1(){ ... list.poll()...}
public void m2(){...list.clear)....}
如何確保ThreadSafety的?這兩種方法是否足以接收「同步」關鍵字,或者我是否需要在方法代碼周圍放置一個「方法代碼」?
常識告訴我它是第二個,但我想確認,或者更簡單的方法來確保我的列表不會被搞砸。
PS:或者這會更好地放在CodeReview?不知何故,這裏感覺更爲合適。
我會建議使用'同步'只在'輪詢'和'清除'而不是在整個方法的關鍵部分。 – TheLostMind
另外,像add()'和remove()'?這樣的方法呢?你將不得不同步*在它們上面? – TheLostMind
好的,首先:謝謝,所有的答案都有幫助:)。由於「有一個現有的系統」的情況下,我最終同步塊重要。對於幾乎所有其他情況,我會指出atish shimpi http://stackoverflow.com/a/27838890/2286132。 @TheLostMind:你是完全正確的,它恰好是這樣,我正在處理的情況下偷看,輪詢和清除,所以他們最終在這個例子中! – Layna