Package hudson.util

Class CopyOnWriteMap<K,​V>

  • All Implemented Interfaces:
    Map<K,​V>
    Direct Known Subclasses:
    CopyOnWriteMap.Hash, CopyOnWriteMap.Tree

    public abstract class CopyOnWriteMap<K,​V>
    extends Object
    implements Map<K,​V>
    Map that has copy-on-write semantics.

    This class is suitable where highly concurrent access is needed, yet the write operation is relatively uncommon.

    Author:
    Kohsuke Kawaguchi
    • Field Detail

      • core

        protected volatile Map<K,​V> core
    • Constructor Detail

      • CopyOnWriteMap

        protected CopyOnWriteMap​(Map<K,​V> core)
      • CopyOnWriteMap

        protected CopyOnWriteMap()
    • Method Detail

      • update

        protected void update​(Map<K,​V> m)
      • replaceBy

        public void replaceBy​(Map<? extends K,​? extends V> data)
        Atomically replaces the entire map by the copy of the specified map.
      • size

        public int size()
        Specified by:
        size in interface Map<K,​V>
      • isEmpty

        public boolean isEmpty()
        Specified by:
        isEmpty in interface Map<K,​V>
      • containsKey

        public boolean containsKey​(Object key)
        Specified by:
        containsKey in interface Map<K,​V>
      • get

        public V get​(Object key)
        Specified by:
        get in interface Map<K,​V>
      • put

        public V put​(K key,
                     V value)
        Specified by:
        put in interface Map<K,​V>
      • remove

        public V remove​(Object key)
        Specified by:
        remove in interface Map<K,​V>
      • putAll

        public void putAll​(Map<? extends K,​? extends V> t)
        Specified by:
        putAll in interface Map<K,​V>
      • copy

        protected abstract Map<K,​V> copy()
      • clear

        public void clear()
        Specified by:
        clear in interface Map<K,​V>
      • keySet

        public Set<K> keySet()
        This method will return a read-only Set.
        Specified by:
        keySet in interface Map<K,​V>