1. Conhecimento básico de Java
Um resumo dos pontos de conhecimento Java, desde o básico até APIs comumente usadas e classes de coleção comumente usadas, o resumo é muito detalhado. As fotos foram encontradas no fórum e organizadas para facilitar a revisão. Este é um mapa mental relativamente detalhado e completo que vi até agora e é muito adequado para quem está apenas começando.
2. Orientado a objetos
3. APIs comumente usadas
4. Coleta IO
1. O que significa "coleções não são seguras para threads"?
Primeiro, vamos entender quais coleções não são seguras para threads:
Quando múltiplas adições, exclusões e modificações simultâneas são feitas em coleções não-thread-safe ao mesmo tempo, a integridade dos dados dessas coleções será destruída; por exemplo:
quando vários threads acessam a mesma coleção ou mapa, se mais de um thread modifica a coleção ArrayList, então o programa deve garantir manualmente a sincronização desta coleção.
2. Coleções thread-safe e thread-insafe
Vector, HashTable, Properties e ConcurrentHashMap são thread-safe;
ArrayList, LinkedList, HashSet, TreeSet, HashMap, TreeMap, etc. são todos thread-inseguros.
Vale a pena notar que, para garantir que a coleção seja segura para threads, a eficiência correspondente é relativamente baixa; a eficiência de uma coleção insegura para threads será relativamente maior.
3. Como considerar de forma abrangente as questões de insegurança de thread e baixa eficiência
Para garantir que as coleções sejam seguras e eficientes, Collections nos fornece uma solução para agrupar essas coleções em coleções thread-safe.
Collections fornece os seguintes métodos estáticos.
//返回指定collection 对应的线程安全的collection。
<T> Collection<T> synchronizedCollection(Collection<T> c);
//返回指定List对象对应的线程安全的List 对象。
static <T> List<T> synchronizedList(List<T> list);
//返回指定Map对象对应的线程安全的Map对象。
static <K, V> Map<K, V> synchronizedMap(Map<K, V> m);
//返回指定Set对象对应的线程安全的Set对象。
static <T> Set<T> synchronizedSet(Set<T> s);
//返回指定SortedMap对象对应的线程安全的SortedMap对象。
static <K, V> SortedMap<K, V> synchronizedSortedMap(SortedMap<K, V> m);