==同步控制==:多线程并发访问集合的线程安全
1.常用容器ArrayList、HashSet、HashMap线程不安全
2.Collections提供了synchronizedXxx()方法,将指定容器包装成同步
synchronizedList() synchronizedSer() synchronizedMap()
==不可变设置==:只读访问,Collections提供了三种方法
1.emptyXxx(): 空的不可变的集合
2.singletonXxx(): 一个元素不可变的集合
3.unmodifiableXxx(): 不可变容器
==线程安全List==:
package com.alexanderli95.otherCollections.synchronizedRead;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 使用Collections管理同步容器
*/
public class Demo01 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("1");
list.add("2");
List<String> synList=Collections.synchronizedList(list); //转变为线程安全的List
}
}
==只读控制==:
package com.alexanderli95.otherCollections.synchronizedRead;
import java.util.*;
/**
* 只读设置
* 1.
* emptyList()
* emptyMap()
* emptySet()
* 2.
* unmodifiableList(List<? extends T> list)
* unmodifiableMap(Map<? extends K,? extends V> m)
* unmodifiableSet(Set<? extends T> s)
*/
public class Demo02 {
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String >();
map.put("1","1");
map.put("2","2");
//只读控制
Map<String,String > map2=Collections.unmodifiableMap(map);
//map2.put("3","3"); 再添加元素会报错
//一个元素的List
List<String> l=Collections.singletonList(new String());
//l.add("1"); 有了一个元素之后,不能再添加
// l.add("2");
}
public static Set<String> oper(Set<String> set){
if(null==set){
return Collections.EMPTY_SET; //避免NullPointerException
}
return set;
}
}