Ideia de copiar na gravação CopyOnWriteArrayList

Copiar na gravação

O contêiner conpyOnWrite é um contêiner de cópia na gravação.Quando adicionar elementos a um contêiner, em vez de adicionar diretamente ao contêiner atual Object [], o contêiner atual Object [] é copiado primeiro e um novo contêiner Object [] newElements é copiado e, em seguida, copiado Adicione elementos ao novo contêiner newElements. Depois de adicionar os elementos, fale sobre a referência do meta contêiner ao novo contêiner setArray (newElements) .A vantagem disso é que o contêiner copyOnWrite pode ser lido simultaneamente sem bloquear, porque O contêiner atual não adicionará nenhum elemento, portanto, o copyOnWrite também é uma ideia separada de leitura e gravação, leitura e gravação de contêineres diferentes.

1   public  boolean add (E e) {
 2          final ReentrantLock lock = this .lock;
3          lock.lock ();
4          experimente {
 5              Object [] elements = getArray ();
6              int len = elements.length;
7              Object [] newElements = Arrays.copyOf (elementos, len + 1 );
8              newElements [len] = e;
9              setArray (newElements);
10              return  true ;
11          } finalmente {
 12             bloquear desbloquear();
13          }
 14      }

 

Acho que você gosta

Origin www.cnblogs.com/max-home/p/12722347.html
Recomendado
Clasificación