- 一 线程安全类:
- 1. StringBuffer
- 2. vector
- 3. Hashtable
- 二 Collections集合工具类,含有线程安全集合类方法的使用:(以下是部分举例)
- 三 以代码内容形式讲解:
- 1. 创建一个ThreadDemo测试类(仔细理解,很重要!!!):
底层源码都加了synchronized关键字修饰
1. StringBuffer- 线程安全可变字符串序列
- 从版本JDK 5开始,这个类别已经被一个等级类补充了,这个类被设计为使用一个线程StringBuilder 。 StringBuilder应该使用StringBuilder类,因为它支持所有相同的操作,但它更快,因为它不执行同步。
- 图文:
- 从Java 2平台v1.2,这个类被改造为实现List接口,使其成为成员Java Collections Framework 。 与新集合实现不同, Vector是同步的。 如果不需要线程安全的实现,建议使用ArrayList代替Vector 。
- 图文:
- 该类实现了一个哈希表,它将键映射到值。 任何非null对象都可以用作键值或值。
- 从Java 2平台v1.2,这个类被改造为实现Map接口,使其成为成员Java Collections Framework 。 与新的集合实现不同, Hashtable是同步的。 如果不需要线程安全的实现,建议使用HashMap代替Hashtable 。 如果需要线程安全的并发实现,那么建议使用ConcurrentHashMap代替Hashtable 。
- 图文:
| 方法名 | 说明 |
|---|---|
| static List synchronizedList(List list); | 返回由指定列表支持的同步(线程安全)列表。 |
| static | 返回由指定地图支持的同步(线程安全)映射。 |
| static Set synchronizedSet(Set s); | 返回由指定集合支持的同步(线程安全)集。 |
package Demo;
import java.util.*;
public class ThreadDemo {
public static void main(String[] args) {
StringBuffer sb = new StringBuffer();//安全类
StringBuilder sb2 = new StringBuilder();
Vector v = new Vector<>();//安全类
ArrayList array = new ArrayList<>();
// static List synchronizedList(List list) 返回由指定列表支持的同步(线程安全)列表。
//将线程不安全的ArrayList()集合类变成线程安全的集合类
List list = Collections.synchronizedList(new ArrayList());
Hashtable ht = new Hashtable<>();//安全类
HashMap hm = new HashMap<>();
// static Map synchronizedMap(Map m) 返回由指定地图支持的同步(线程安全)映射。
//将线程不安全的HashMap()集合类变成线程安全的集合类
Map sm = Collections.synchronizedMap(new HashMap());
}
}



