212 |
|
* highly contended cases. |
213 |
|
* |
214 |
|
* Unlike most skip-list implementations, index insertion and |
215 |
< |
* deletion here require a separate traversal pass occuring after |
215 |
> |
* deletion here require a separate traversal pass occurring after |
216 |
|
* the base-level action, to add or remove index nodes. This adds |
217 |
|
* to single-threaded overhead, but improves contended |
218 |
|
* multithreaded performance by narrowing interference windows, |
1270 |
|
} |
1271 |
|
} |
1272 |
|
|
1273 |
< |
/** |
1273 |
> |
/** |
1274 |
|
* Removes first entry; return key or null if empty. |
1275 |
|
*/ |
1276 |
|
K pollFirstKey() { |
2842 |
|
} |
2843 |
|
|
2844 |
|
final class DescendingEntryIterator extends EntryIter |
2845 |
< |
implements Iterator<Map.Entry<K,V>> { |
2845 |
> |
implements Iterator<Map.Entry<K,V>> { |
2846 |
|
DescendingEntryIterator() { |
2847 |
|
initDescending(); |
2848 |
|
} |
2854 |
|
} |
2855 |
|
|
2856 |
|
final class DescendingSubMapEntryIterator extends EntryIter |
2857 |
< |
implements Iterator<Map.Entry<K,V>> { |
2857 |
> |
implements Iterator<Map.Entry<K,V>> { |
2858 |
|
final K least; |
2859 |
|
DescendingSubMapEntryIterator(K least, K fence) { |
2860 |
|
initDescending(least, fence); |