gpt4 book ai didi

Java 可变链表

转载 作者:行者123 更新时间:2023-11-29 05:49:39 25 4
gpt4 key购买 nike

我正在尝试对 LinkedList 进行非常特殊的排序。我使用 ListIterator 来查找我想要添加项目的位置,并且效果很好。唯一的问题是我有多个线程想要添加和排序项目。添加本身是同步的,但 LinkedList 使用非 volatile 属性。那不安全,是吗?这是我正在尝试做的(简化):

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 类型或我只是不知道的另一种解决方案?

最佳答案

只要访问和修改 Test.list 的唯一方法是通过 Test.add(),您的代码就是线程安全的。

如果有其他方法可以访问/修改Test.list,您需要告诉我们更多。

关于Java 可变链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14414981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com