案例一:使用Collections管理同步容器
1 package com.bjsxt.others.synread; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.List; 6 7 /** 8 * 使用Collections管理同步容器 9 * synchronizedList() 10 * synchronizedSet() 11 * synchronizedMap() 12 * 13 */ 14 public class Demo01 { 15 public static void main(String[] args) { 16 List<String> list = new ArrayList<String>(); 17 list.add("a"); 18 list.add("b"); 19 //list可以同步 20 List<String> synList = Collections.synchronizedList(list); 21 System.out.println("线程安全的list制作完毕"); 22 } 23 }
案例二:使用了Collections的三个方法
1 package com.bjsxt.others.synread; 2 3 import java.util.Collections; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.Set; 8 9 /** 10 * 只读设置 11 * emptyXxx() 空的不可变的集合 12 * 1、emptyList() 13 * emptyMap() 14 * emptySet() 15 * 16 * 2、singletonXxx() 一个元素不可变的集合 17 * singleton(T o) 18 * singletonList(T o) 19 * singletonMap(K key, V value) 20 * 21 * 3、unmodifiableXxx() 不可变容器 22 * unmodifiableList(List<? extends T> list) 23 * unmodifiableSet(Set<? extends T> s) 24 * unmodifiableMao(Map<? extends K, ? extends V> m) 25 * 26 */ 27 public class Demo02 { 28 29 public static void main(String[] args) { 30 // TODO Auto-generated method stub 31 Map<String,String> map = new HashMap<String,String>(); 32 33 map.put("test", "test"); 34 map.put("bjsxt", "bjsxt"); 35 36 //只读控制 37 Map<String,String> map2 = Collections.unmodifiableMap(map); 38 //map2.put("a","a"); //会报错 39 System.out.println(map2.size()); 40 41 //一个元素的容器测试 42 List<String> list = Collections.singletonList(new String()); 43 list.add("test"); 44 //list.add("bjsxt"); 会报错,因为只能包含一个元素 45 } 46 47 public static Set<String> oper(Set<String> set) { 48 if(null == set) { 49 return Collections.EMPTY_SET; //外部获取避免NullPointerException 50 } 51 //操作 52 return set; 53 } 54 55 }