Concept
1. CopyOnWriteArrayList est un conteneur simultané fourni dans le package de concurrence Java. Il s'agit d'une ArrayList sécurisée pour les threads et sans verrouillage pour les opérations de lecture. En créant le sous-jacent Utiliser une nouvelle copie du tableau pour implémenter l'opération d'écriture est une stratégie de concurrence qui sépare la lecture et l'écriture. On peut également l'appeler « copie sur écriture ».
2. CopyOnWriteArrayList permet une lecture simultanée, et la lecture n'est pas verrouillée. La chose la plus importante est que cela n'affecte pas la lecture lors de l'écriture, car lors de l'écriture, copier le tableau d'origine et l'utiliser dans un nouveau tableau. n'affecte pas du tout le tableau d'origine. Seules plusieurs écritures sont synchronisées. Je pense que c'est très similaire au mécanisme de concurrence multi-versions d'une base de données.
Exemple
public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length; Object[] newElements = Arrays.copyOf(elements, len + 1); newElements[len] = e; setArray(newElements); return true; } finally { lock.unlock(); } }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!