java 之前的安全的类回顾,以及以后需要线程安全时使用哪些类

之前所学习到的线程安全的类:

StringBuffer:线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。

Vector:Vector 类可以实现可增长的对象数组。

Hashtable:此类实现一个哈希表,该哈希表将键映射到相应的值。任何非 null 对象都可以用作键或值。

1 // 线程安全的类
2 StringBuffer sb = new StringBuffer();
3 Vector<String> v = new Vector<String>();
4 Hashtable<String, String> h = new Hashtable<String, String>();

 

之前提过,Vector是线程安全的时候才去考虑的,但是就算要安全,也不使用它。

那么,我们使用什么呢?用下面这些:

  API 搜索Collections,查看方法

A:public static <T> Collection<T> synchronizedCollection(Collection<T> c):返回指定 collection 支持的同步(线程安全的)collection。

B:public static <T> List<T> synchronizedList(List<T> list):返回指定列表支持的同步(线程安全的)列表。

C:public static <K,V> Map<K,V> synchronizedMap(Map<K,V> m):返回由指定映射支持的同步(线程安全的)映射。

D:public static <T> Set<T> synchronizedSet(Set<T> s):返回指定 set 支持的同步(线程安全的)set。

E:public static <K,V> SortedMap<K,V> synchronizedSortedMap(SortedMap<K,V> m):返回指定有序映射支持的同步(线程安全的)有序映射。

F:public static <T> SortedSet<T> synchronizedSortedSet(SortedSet<T> s):返回指定有序 set 支持的同步(线程安全的)有序 set。

 

选B来作为例子:

  之前的线程不安全:

List<String> list1 = new ArrayList<String>();// 线程不安全

  现在使用B,线程安全的:

List<String> list2 = Collections.synchronizedList(new ArrayList<String>()); // 线程安全

 

转载于:https://www.cnblogs.com/LZL-student/p/5936390.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值