Tengo una pregunta general sobre la lista sincronizada.
supongamos que en el constructor estoy createing una listajava - general synchronizedList pregunta
List synchronizedList = Collections.synchronizedList(list);
y tengo un método agrega un objeto a la lista.
public void add(String s){
synchronizedList.add(s)
}
Hay otro hilo que comprueba cada pocos segundos si hay algunas filas, lo descarga en un archivo y se los elimina.
Ahora digamos que repito cada fila y la guardo en la base de datos. después de toda iteración borro la lista.
¿Cómo me ayuda el soporte multitoma?
Podría agregar un elemento a la lista justo antes de que aparezca clear() en el otro subproceso.
A menos que administre el bloqueo yo mismo (que realmente no necesito una lista sincronizada para eso) yo mismo.
Como todas las tres respuestas indican, la lista sincronizada significa que todas las operaciones en esa lista se garantiza que son atómicas o garantizan el acceso en serie a las llamadas a métodos individuales. Tenía que preguntarle a mi colega qué significa eso. Por lo tanto, significa que las operaciones en Lista como (desde el fragmento de código anterior) 'synchronizedList.size()' y 'synchronizedList.add (s)' no pueden estar en paralelo. Esto no es obvio para algunas personas que están leyendo este hilo. Así que aunque agreguemos para ayudar a otros que no entienden. Gracias @ WhiteFang34, @ jb-nizet y @khachik por las explicaciones a continuación. –