我有一個鏈表samples
:LinkedList是線程安全的,當我使用offer和poll進行訪問時,它是線程安全的嗎?
protected LinkedList<RawDataset> samples = new LinkedList<RawDataset>();
我追加元素到列表中的線程1這樣的:
this.samples.offer(data);
而且我從檢索它的元素在第二個線程像所以:
public RawDataset retrieveSample() {
return this.samples.poll();
}
這是否被認爲是線程安全的?即使線程1和2都在修改列表,他們只能在列表的首部或尾部進行修改,對吧?
如果不是任何人都可以指向我的一個類,那麼在poll
/offer
附帶的Java API中肯定是線程安全的?
預先感謝您。
順便說一句:Collections.synchronizedList(new LinkedList())
將不會給我訪問offer
/poll
。
方法'offer'和'poll'實際上declard接口'Queue',除了List接口以外,它由LinkedList實現。這就是爲什麼這些方法對Collections.synchronizedList的結果不可用。 – 2010-07-29 12:05:12