195 |
|
* already commenced traversing elements |
196 |
|
*/ |
197 |
|
Spliterator<T> split(); |
198 |
– |
|
199 |
– |
/** |
200 |
– |
* Returns a Spliterator producing the same elements as this |
201 |
– |
* Spliterator. This method may be used for example to create |
202 |
– |
* a second Spliterator before a traversal, in order to later |
203 |
– |
* perform a second traversal. |
204 |
– |
* |
205 |
– |
* @return a Spliterator covering the same range as this Spliterator. |
206 |
– |
* @throws IllegalStateException if this Spliterator has |
207 |
– |
* already commenced traversing elements |
208 |
– |
*/ |
209 |
– |
Spliterator<T> clone(); |
198 |
|
} |
199 |
|
|
200 |
|
/* |
2187 |
|
baseLimit = baseSize = (tab == null) ? 0 : tab.length; |
2188 |
|
} |
2189 |
|
|
2190 |
< |
/** Creates iterator for clone() and split() methods */ |
2190 |
> |
/** Creates iterator for clone() and split() methods. */ |
2191 |
|
InternalIterator(InternalIterator<K,V> it, boolean split) { |
2192 |
|
this.map = it.map; |
2193 |
|
this.tab = it.tab; |
2199 |
|
} |
2200 |
|
|
2201 |
|
/** |
2202 |
< |
* Advances next; returns nextVal or null if terminated |
2202 |
> |
* Advances next; returns nextVal or null if terminated. |
2203 |
|
* See above for explanation. |
2204 |
|
*/ |
2205 |
|
final Object advance() { |
2249 |
|
/* ---------------- Public operations -------------- */ |
2250 |
|
|
2251 |
|
/** |
2252 |
< |
* Creates a new, empty map with the default initial table size (16), |
2252 |
> |
* Creates a new, empty map with the default initial table size (16). |
2253 |
|
*/ |
2254 |
|
public ConcurrentHashMapV8() { |
2255 |
|
this.counter = new LongAdder(); |
2330 |
|
if (initialCapacity < concurrencyLevel) // Use at least as many bins |
2331 |
|
initialCapacity = concurrencyLevel; // as estimated threads |
2332 |
|
long size = (long)(1.0 + (long)initialCapacity / loadFactor); |
2333 |
< |
int cap = ((size >= (long)MAXIMUM_CAPACITY) ? |
2334 |
< |
MAXIMUM_CAPACITY: tableSizeFor((int)size)); |
2333 |
> |
int cap = (size >= (long)MAXIMUM_CAPACITY) ? |
2334 |
> |
MAXIMUM_CAPACITY : tableSizeFor((int)size); |
2335 |
|
this.counter = new LongAdder(); |
2336 |
|
this.sizeCtl = cap; |
2337 |
|
} |
2940 |
|
|
2941 |
|
/** |
2942 |
|
* Sets our entry's value and writes through to the map. The |
2943 |
< |
* value to return is somewhat arbitrary here. Since a we do |
2944 |
< |
* not necessarily track asynchronous changes, the most recent |
2943 |
> |
* value to return is somewhat arbitrary here. Since we do not |
2944 |
> |
* necessarily track asynchronous changes, the most recent |
2945 |
|
* "previous" value could be different from what we return (or |
2946 |
|
* could even have been removed in which case the put will |
2947 |
|
* re-establish). We do not and cannot guarantee more. |