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)
        }
    }
}
上記のソースは、私が行っていることに似ているだけで、元のソースよりもはるかに単純です。
スレッドセーフな、または私が知らない別の解決策である、私が見たことがない別のリストタイプはありますか?