Pergunta

Eu estou usando ArrayList estático em uma classe para armazenar informações sobre os campos de banco de dados não-atualizáveis. Eu estou planejando para inicializar-lo no construtor uma vez (chamada método init guardado por bloqueio no construtor). Depois que vários tópicos verificar se arraylist Contém um campo. Eu tenho que controlar esse acesso de leitura de alguma forma? Por exemplo, chamando ArrayList.Synchronized.

Foi útil?

Solução

Não (e você precisa ter pego quando criá-la, quer contanto que você fazê-lo no construtor static, que tem um bloqueio multithread implícita - se você não está em posição de fazer isso, você provavelmente vai querer lock). Há uma ReaderWriterLockSlim se você pode usar para controle de acesso se você acabar precisando para R / W acesso embora.

Outras dicas

No. Sincronização é necessária apenas para objetos stateful, onde você está indo para alterar o estado.

Não, desde que você está lendo você pode apenas têm-no.

Não, mas considere envolvê-lo em um ReadOnlyCollection para make se nenhum dos tópicos podem modificá-lo.

Edit:. No entanto, para fazer isso, você precisa fazer a lista um List<T> em vez de um ArrayList

Para a criação inicial de sua lista você pode considerar o uso de um construtor estático. Isso só vai ser chamado uma vez na primeira referência ao tipo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top