我正在尝试对 LinkedList 进行非常特殊的排序。我使用 ListIterator 来查找我想要添加项目的位置,并且运行良好。唯一的问题是我有多个线程想要添加和排序项目。添加本身是同步的,但 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)
}
}
}
上面的源代码只类似于我正在做的事情,并且比原来的要简单得多。
是否有另一种我没有见过的 List 类型是线程安全的,或者是我不知道的另一种解决方案?