java学习笔记之容器的同步与只读控制
来源:互联网 发布:手机财经软件 编辑:程序博客网 时间:2024/06/16 09:33
1、容器的同步
多线程并发访问集合的线程安全。
常用容器ArrayList、HashMap、HashSet等都是线程不安全的。
java.util.Collections提供了synchronizedXxx()方法将指定容器包装成同步。
synchronizedList(List list);synchronizedSet(Set set);synchronizedMap(Map map);
例子:
import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * 容器的同步 * @author ly1 * */public class TestSyn { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("aaa"); list.add("bbb"); list.add("ccc"); List<String> list2 = new ArrayList<String>(); // 这里list2是线程安全的 list2 = Collections.synchronizedList(list); }}
2、只读访问
容器内的元素只读,不可修改。
java.util.Collections提供了三种方法:
empty(Xxx xx); 空的不可变的集合singleton(Object o); 含指定对象的一个元素的不可变的集合unmodifiableXxx(Xxx xx); 不可变容器
例子:
import java.util.Collections;import java.util.HashSet;import java.util.Set;/** * 容器的只读控制 * * @author ly1 * */public class TestReadOnly { public static void main(String[] args) { //1、只读空容器 Set set = fun(null); System.out.println(set.size()); //set.add("ele"); //引发java.lang.UnsupportedOperationException //2、只含一个对象的只读容器 Set singleton = Collections.singleton(new String("Hello")); System.out.println(singleton.size()); //singleton.add("ele"); //引发java.lang.UnsupportedOperationException //3、只读容器 Set ReadOnlySet = new HashSet(); ReadOnlySet.add("hi"); ReadOnlySet.add("hello"); ReadOnlySet.add("welcome"); ReadOnlySet = Collections.unmodifiableSet(ReadOnlySet); System.out.println(singleton.size()); //ReadOnlySet.add("ele"); 引发java.lang.UnsupportedOperationException } public static Set fun(Set set){ //这里操作set //返回set,避免返回null,引发NullPointerException return set == null ? Collections.emptySet() : set; }}
0 0
- java学习笔记之容器的同步与只读控制
- 容器的同步控制与只读设置JAVA133
- java容器(集合)的控制与只读设置
- 133_容器_容器的同步控制与只读设置
- JAVA学习笔记46——其他容器简介3:guava只读控制+函数式编程+集合操作
- 学习笔记之--java容器
- java并发编程学习:同步容器与并发容器
- Java多线程之同步容器与并发容器
- Java多线程之同步类容器与并发容器
- java学习个人笔记---容器之Map与Set关系
- Java学习笔记之线程的控制
- Java只读集合与同步集合
- java学习个人笔记---容器之Vetor与ArrayList的区别
- Collections 管理同步容器 和 只读容器
- Java容器类学习笔记3--同步性问题
- Java并发学习笔记(10)线程同步容器
- c++学习笔记之vector容器与list容器
- Java同步容器与并发容器
- Scala集合一些操作
- 恢复默认设置对语音控制选项无效
- 最长递增子序列
- Enumeration遍历
- Spark 1.1.0 Basic Statistics(下)
- java学习笔记之容器的同步与只读控制
- Highcharts数据列(Series)
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
- 洛谷1290 欧几里德的游戏
- 不重叠模式串个数 KMP hdu 2087 剪花布条
- Unity3D:spine使用
- 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)
- map进行字符串的查找
- 解决Mysql乱码问题