concurrencia de Java: estrategia CopyOnWriteArrayList

Estoy tratando de entender CopyOnWriteArrayListmi código:

Mi código es:

public class AuditService {
    private CopyOnWriteArrayList<Audit> copyWrite;

    public void flush(Audit... audits) {
        Collection<Audit> auditCollection = Arrays.asList(audits);
        this.copyWrite.addAll(auditCollection);

        this.copyWrite.forEach(audit -> {
            try {
              // save audit object on database
              this.copyWrite.remove(audit);
            } catch (DataAccessException e) {
              // log it
            }

        });
    }
}

Lo que hace este código es:

  1. Primeras tiendas en las auditorías aa búfer, CopyOnWriteArrayList.
  2. Intenta guardar una auditoría en la base de datos
  3. Cuando se ha almacenado, se elimina del búfer CopyOnWriteArrayList.

Otros:

  1. AuditService es una clase singleton
  2. flush El método puede ser alcanzado por varios hilos.

Preguntas:

  1. Supongo que this.copyWrite.forEach(audit -> {...varios hilos pueden alcanzarlo al mismo tiempo: ¿Significa que se puede intentar guardar un mismo objeto de auditoría en la base de datos dos veces?
  2. Cada vez que se realiza una operación de modificación CopyOnWriteArrayList, ¿se completa una nueva copia en otros hilos? ¿Cómo se puebla?
Respuesta 1

Soy nuevo en Regexp. Me sorprende escribir expresiones regulares para el siguiente escenario. ¿Puede alguien ayudarme a resolver esto? Si tengo una cadena como la siguiente: <Tag1 attr = "test" /> <Tag2> & ...

Todavía soy nuevo en el lenguaje y las bibliotecas de Java ... a menudo uso este tipo de patrón en Python, y me pregunto cómo debería implementar este con Java. Necesito leer un archivo enorme línea por línea, con ...

He escrito un servidor UDP simple usando Netty. El servidor escucha en un puerto en una determinada interfaz. ChannelFactory factory = new NioDatagramChannelFactory (Ejecutores ...

Necesito poder editar un objeto Pageable, más específicamente uno de los Sorts. Tengo un miembro de DTO que tiene una dirección de correo electrónico de propiedad. Desconocido para el cliente, esta es la información que se recopila ...