mirror of
https://github.com/corda/corda.git
synced 2025-06-13 12:48:18 +00:00
implement ConcurrentHashMap and AtomicReferenceArray
This is the simplest possible ConcurrentHashMap I could come up with that works and is actually concurrent in the way one would expect. It's pretty unconventional, being based on a persistent red-black tree, and not particularly memory-efficient or cache-friendly. I think this is a good place to start, though, and it should perform reasonably well for most workloads. Patches for a more efficient implementation are welcome! I also implemented AtomicReferenceArray, since I was using it in my first, naive attempt to implement ConcurrentHashMap. I had to do a bit of refactoring, including moving some non-standard stuff from java.util.Collections to avian.Data so I could make it available to code outside the java.util package, which is why I had to modify several unrelated files.
This commit is contained in:
@ -131,7 +131,7 @@ public class LinkedHashMap<K, V> extends HashMap<K, V> {
|
||||
}
|
||||
|
||||
public <T> T[] toArray(T[] array) {
|
||||
return Collections.toArray(this, array);
|
||||
return avian.Data.toArray(this, array);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
@ -169,7 +169,7 @@ public class LinkedHashMap<K, V> extends HashMap<K, V> {
|
||||
}
|
||||
|
||||
public <T> T[] toArray(T[] array) {
|
||||
return Collections.toArray(this, array);
|
||||
return avian.Data.toArray(this, array);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
@ -177,7 +177,7 @@ public class LinkedHashMap<K, V> extends HashMap<K, V> {
|
||||
}
|
||||
|
||||
public Iterator<K> iterator() {
|
||||
return new Collections.KeyIterator(new MyIterator());
|
||||
return new avian.Data.KeyIterator(new MyIterator());
|
||||
}
|
||||
}
|
||||
|
||||
@ -230,7 +230,7 @@ public class LinkedHashMap<K, V> extends HashMap<K, V> {
|
||||
}
|
||||
|
||||
public <T> T[] toArray(T[] array) {
|
||||
return Collections.toArray(this, array);
|
||||
return avian.Data.toArray(this, array);
|
||||
}
|
||||
|
||||
public void clear() {
|
||||
@ -238,7 +238,7 @@ public class LinkedHashMap<K, V> extends HashMap<K, V> {
|
||||
}
|
||||
|
||||
public Iterator<V> iterator() {
|
||||
return new Collections.ValueIterator(new MyIterator());
|
||||
return new avian.Data.ValueIterator(new MyIterator());
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user