CodeGym/Cursos Java/Módulo 3/Coleções Simultâneas

Coleções Simultâneas

Disponível

CopyOnWriteArrayList

As operações add , set , remove em uma determinada coleção resultam na criação de uma nova cópia do array interno. Isso garante que não capturemos ConcurrentModificationException .

Apenas lembre-se de que, ao copiar um array, apenas as referências a objetos são copiadas, incluindo o acesso aos campos de elementos não thread-safe. Essas coleções são mais bem usadas em casos com um número mínimo de operações de gravação.

CopyOnWriteArrayList<E> é um análogo thread-safe de ArrayList , implementado com base nos algoritmos CopyOnWrite. Métodos adicionais e construtores são descritos abaixo:

CopyOnWriteArrayList(E[] toCopyIn) Um construtor que usa uma matriz como entrada.
int indexOf(E e, int index) Retorna o índice do primeiro elemento encontrado, iniciando no índice informado.
int lastIndexOf(E e, int index) Retorna o índice do primeiro elemento encontrado em uma pesquisa reversa, começando no índice fornecido.
booleano addIfAbsent(E e) Adicione um elemento se ele não estiver na coleção. O método equals é usado para comparar elementos .
int addAllAbsent(Collection<? extends E> c) Adicione elementos se eles não estiverem na coleção. Retorna o número de elementos adicionados.

Interface ConcurrentMap

Implementações aprimoradas de HashMap e TreeMap com suporte para multithreading e escalabilidade.

ConcurrentMap<K, V> é uma interface que estende Map com operações atômicas adicionais.

V putIfAbsent(chave K, valor V) Adiciona um novo par chave-valor somente se a chave não estiver na coleção. Retorna o valor anterior para a chave fornecida.
boolean remove(chave do objeto, valor do objeto) Remove o par chave-valor apenas se a chave fornecida corresponder ao valor fornecido no Mapa. Retorna true se o elemento foi removido com sucesso.
boolean replace(K key, V oldValue, V newValue) Substitui o valor antigo pelo novo por chave somente se o valor antigo corresponder ao valor fornecido no Mapa. Retorna true se o valor foi substituído por um novo.
V substituir (tecla K, valor V) Substitui um valor antigo por um novo por chave somente se a chave estiver associada a qualquer valor. Retorna o valor anterior para a chave fornecida.

ConcurrentHashMap<K, V> - aqui os dados são apresentados na forma de segmentos, que são divididos em hashs de chave. Como resultado, se você precisar de acesso, o segmento será bloqueado, não o objeto. Os iteradores não lançam ConcurrentModificationException e representam dados para um período de tempo específico.

Implementações de ConcurrentHashMap

ConcurrentHashMap<K, V> - aqui os dados são apresentados na forma de segmentos, divididos por hashs de chave. Como resultado, o acesso aos dados é bloqueado por segmentos, não por um objeto. Além disso, os iteradores representam dados para uma fatia de tempo específica e não lançam ConcurrentModificationException .

ConcurrentNavigableMap<K,V> - estende a interface NavigableMap e retorna um ConcurrentNavigableMap . Todos os iteradores são seguros de usar e não lançam ConcurrentModificationException .

ConcurrentSkipListMap<K, V> é um análogo do TreeMap para multithreading. Os dados são classificados por chave e o desempenho log(N) médio é garantido paracontainsKey,get,put,removee outras operações semelhantes.

ConcurrentSkipListSet<E> é uma implementação da interface Set baseada em ConcurrentSkipListMap .

1
Tarefa
Módulo 3,  nível 19lição 2
Bloqueado
10 plus 20 equals 20
task4203
1
Tarefa
Módulo 3,  nível 19lição 2
Bloqueado
Thread-unsafe Map
task4204
Comentários
  • Populares
  • Novas
  • Antigas
Você precisa acessar para deixar um comentário
Esta página ainda não tem nenhum comentário