Pregunta

Estoy usando ArrayList estático en una clase para almacenar información sobre campos de bases de datos no actualizables. Estoy planeando inicializarlo en el constructor una vez (llamada al método init guardada por lock in constructor). Después de eso, múltiples hilos comprueban si la lista de arrays contiene un campo. ¿Tengo que controlar este acceso de lectura de alguna manera? Por ejemplo llamando a ArrayList.Synchronized.

¿Fue útil?

Solución

No (y no debería necesitarlo al crearlo siempre que lo haga en el constructor static, que tiene un bloqueo multiproceso implícito : si no está en condiciones de hacerlo, probablemente querrá bloquearlo). Hay un ReaderWriterLockSlim si puede usar para controlar el acceso si termina necesitando acceso R / W.

Otros consejos

No. La sincronización solo es necesaria para los objetos con estado en los que va a cambiar el estado.

No, siempre y cuando estés leyendo puedes tenerlo.

No, pero considere envolverlo en un ReadOnlyCollection para asegurarse de que ninguno de los hilos pueda modificarlo.

Editar: Sin embargo, para hacer esto, debe hacer que la lista sea un List<T> en lugar de un ArrayList.

Para la creación inicial de su Lista, podría considerar usar un constructor estático. Esto solo se llamará una vez en la primera referencia al tipo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top