容器的同步控制与只读设置JAVA133
来源:互联网 发布:泛雅网络教学平台页面 编辑:程序博客网 时间:2024/06/06 00:12
来源:http://www.bjsxt.com/
1、S02E133_01容器的同步控制与只读设置
(1)同步控制:多线程并发访问集合的线程安全(多人咬苹果不咬到其他人的手)
——常用ArrayList、HashSet、HashMap等都是线程不安全的
——Collections提供了synchronizedXxx()方法,将指定容器包装成同步
——1——synchronizedList()
——2——synchronizedSet()
——3——synchronizedMap()
package com.test.collections;import java.util.ArrayList;import java.util.Collections;import java.util.List;public class TestSyn { public static void main(String[] args) { //list不可同步 List<String> list = new ArrayList<String>(); list.add("a"); list.add("b"); //synList可以同步 List<String> synList = Collections.synchronizedList(list); System.out.println("线程安全的" + synList + "制作完毕"); }}
(2)不可变设置:“只读”访问,Collections提供了三种方法
a.——emptyXxx():空的不可变的集合——1——static <T> List<T> emptyList() 返回空的列表(不可变的)。 ——2——static <K,V> Map<K,V> emptyMap() 返回空的映射(不可变的)。 ——3——static <T> Set<T> emptySet() 返回空的 set(不可变的)。 b.——singletonXxx():一个元素不可变的集合——1——static <T> Set<T> singleton(T o) 返回一个只包含指定对象的不可变 set。 ——2——static <T> List<T> singletonList(T o) 返回一个只包含指定对象的不可变列表。 ——3——static <K,V> Map<K,V> singletonMap(K key, V value) 返回一个不可变的映射,它只将指定键映射到指定值。 c.——unmodifiableXxx():不可变容器——1——static <T> Collection<T> unmodifiableCollection(Collection<? extends T> c) 返回指定 collection 的不可修改视图。 ——2——static <T> List<T> unmodifiableList(List<? extends T> list) 返回指定列表的不可修改视图。 ——3——static <K,V> Map<K,V> unmodifiableMap(Map<? extends K,? extends V> m) 返回指定映射的不可修改视图。 ——4——static <T> Set<T> unmodifiableSet(Set<? extends T> s) 返回指定 set 的不可修改视图。 ——5——static <K,V> SortedMap<K,V> unmodifiableSortedMap(SortedMap<K,? extends V> m) 返回指定有序映射的不可修改视图。 ——6——static <T> SortedSet<T> unmodifiableSortedSet(SortedSet<T> s) 返回指定有序 set 的不可修改视图。
package com.test.collections;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Set;public class TestReadOnly { public static void main(String[] args) { testMap(); testList(); System.out.println(testSet(null));//打印:[] } public static void testMap(){ Map<String, String> map =new HashMap<String, String>(); map.put("a1", "a1"); map.put("a2", "a2"); //只读控制 Map<String, String> map2 = Collections.unmodifiableMap(map); //map2.put("a3", "a3");//此句产生异常java.lang.UnsupportedOperationException System.out.println(map2.size()); } public static void testList(){ //一个元素的容器测试 List<String> list = Collections.singletonList(new String("b1")); //list.add("b2");//只能包含一个元素的容器,此句产生异常UnsupportedOperationException System.out.println(list); } public static Set<String> testSet(Set<String> set){ if(null == set){ return Collections.emptySet();//外部获取避免NullPointerException } set.isEmpty();//没有上面if的处理,会产生异常NullPointerException return set; }}
0 0
- 容器的同步控制与只读设置JAVA133
- 133_容器_容器的同步控制与只读设置
- java学习笔记之容器的同步与只读控制
- java容器(集合)的控制与只读设置
- 只读设置与同步设置
- Collections 管理同步容器 和 只读容器
- Checkbox的只读设置
- checkbox的只读设置
- 线程的控制与同步
- mysql只读模式的设置方法与实验
- ExtJs中TextField与TextArea的只读属性设置
- Java只读集合与同步集合
- Ubuntu下Samba服务器的简单设置,只读,可读写等权限控制。
- 设置列的只读属性
- 设置input的只读属性
- DWR的异步与同步的控制
- 容器与控制反转
- 容器类的同步
- python核心编程-filter函数
- poj Repeater 3768 (模拟&&dfs) 好题
- HDOJ 5289 Assignment 【RMQ 二分 || 单调队列】
- android html解析
- cmd正则表达式批量重命名
- 容器的同步控制与只读设置JAVA133
- poj Fractal 2083 (模拟&&dfs)
- CSU 1553 线段树+尺取法
- java设计模式(四)—工厂模式
- 容器(一):队列容器List
- 电信用户分群精准画像的7个步骤
- HDU 1114 Piggy-Bank (完全背包)
- Linux Kernel List
- ARM_s5pv210_arm_9