我想對LinkedList做一個非常特殊的排序。我使用ListIterator來查找我想要添加項目的位置,並且工作安靜。唯一的問題是我有多個想要添加和排序項目的線程。添加本身是同步的,但LinkedList使用非易失性屬性。這不安全,是嗎?這是我想要做的(簡化):Java易變LinkedList
public class Test {
private LinkedList<Long> list = new LinkedList<Long>();
synchronized void add (final long number) {
// iterate our sorting list
final ListIterator<Long> iterator = list.listIterator(list.size());
while (iterator.hasPrevious()) {
long current = iterator.previous();
if (current < number) {
if (iteratot.nextIndex() >= list.size()) {
list.add(number); // I don't need the iterator anymore
} else {
iterator.next();
iterator.add(number);
}
}
// This here gets difficult
// I need the current number here! (which is the one that is a little lower than the added one)
}
}
}
上面的來源只是類似於我在做什麼,是更簡單的,原來的。
是否有另一個列表類型我沒有看到哪個線程安全或另一個解決方案,我只是不知道?
我唯一的想法是因爲LinkedList的屬性不是不穩定的。這沒有問題呢? – Nemo64
如果您正在使用同步它建立之前發生的關係,所以它是線程安全的IMO –