Java ConcurrentSkipListMap&x27;s lastEntry()方法是否有效?

Java ConcurrentSkipListMap&x27;s lastEntry()方法是否有效?,java,java.util.concurrent,Java,Java.util.concurrent,我正在使用ConcurrentSkipListMap对象(Java),需要访问最后一个条目。API确实提供了lastEntry()方法。 现在让我们假设我通过这种方式得到地图最后一个条目的值: MyValueClass myValue = myConcurrentMap.lastEntry().getValue(); 在稍后的某个时刻,另一个线程在映射中放入一个新条目 myConcurrentMap.put(key, value); 我之前从地图上得到的myValue对象现在发生了什么?它是

我正在使用ConcurrentSkipListMap对象(Java),需要访问最后一个条目。API确实提供了lastEntry()方法。 现在让我们假设我通过这种方式得到地图最后一个条目的值:

MyValueClass myValue = myConcurrentMap.lastEntry().getValue();
在稍后的某个时刻,另一个线程在映射中放入一个新条目

myConcurrentMap.put(key, value);

我之前从地图上得到的myValue对象现在发生了什么?它是在我从映射中获取对象时保留对最后一个条目中的对象的引用,还是继续重新计算映射的最后一个条目并相应地更改引用?

您是在询问线程安全还是Java中引用的基本工作?你的标题是第一个,但你的帖子表明你并不真正了解引用是如何工作的。我将编辑我的标题,我想知道的是在我描述的场景中会发生什么。一旦检索到,它将保持不变。如果它像你建议的那样,想想后果。您永远无法确定您的引用是否仍然是从集合中检索到的引用。噩梦!若您再次检索最后一个值,那个么您必须有新的值。这是所有引用的工作方式,无论您在哪里检索它们。如果不进行显式重新指定,它们无法更改指向的对象。如果它们指向一个可变对象,该对象的属性可以更改,但仍然是同一个对象。