> 文档中心 > 线程安全类

线程安全类

线程安全

  • 一 线程安全类:
    • 1. StringBuffer
    • 2. vector
    • 3. Hashtable
  • 二 Collections集合工具类,含有线程安全集合类方法的使用:(以下是部分举例)
  • 三 以代码内容形式讲解:
    • 1. 创建一个ThreadDemo测试类(仔细理解,很重要!!!):

一 线程安全类:

底层源码都加了synchronized关键字修饰

1. StringBuffer

  • 线程安全可变字符串序列
  • 从版本JDK 5开始,这个类别已经被一个等级类补充了,这个类被设计为使用一个线程StringBuilder 。 StringBuilder应该使用StringBuilder类,因为它支持所有相同的操作,但它更快,因为它不执行同步。
  • 图文:
    吴含

2. vector

  • 从Java 2平台v1.2,这个类被改造为实现List接口,使其成为成员Java Collections Framework 。 与新集合实现不同, Vector是同步的。 如果不需要线程安全的实现,建议使用ArrayList代替Vector 。
  • 图文:
    吴含

3. Hashtable

  • 该类实现了一个哈希表,它将键映射到值。 任何非null对象都可以用作键值或值。
  • 从Java 2平台v1.2,这个类被改造为实现Map接口,使其成为成员Java Collections Framework 。 与新的集合实现不同, Hashtable是同步的。 如果不需要线程安全的实现,建议使用HashMap代替Hashtable 。 如果需要线程安全的并发实现,那么建议使用ConcurrentHashMap代替Hashtable 。
  • 图文:
    吴含

二 Collections集合工具类,含有线程安全集合类方法的使用:(以下是部分举例)

方法名 说明
static List synchronizedList(List list); 返回由指定列表支持的同步(线程安全)列表。
static Map synchronizedMap(Map m); 返回由指定地图支持的同步(线程安全)映射。
static Set synchronizedSet(Set s); 返回由指定集合支持的同步(线程安全)集。

三 以代码内容形式讲解:

1. 创建一个ThreadDemo测试类(仔细理解,很重要!!!):

package Demo;import java.util.*;public class ThreadDemo {    public static void main(String[] args) { StringBuffer sb = new StringBuffer();//安全类 StringBuilder sb2 = new StringBuilder(); Vector<String> v = new Vector<>();//安全类 ArrayList<String> array = new ArrayList<>();//static  List synchronizedList(List list)  返回由指定列表支持的同步(线程安全)列表。 //将线程不安全的ArrayList()集合类变成线程安全的集合类 List<String> list = Collections.synchronizedList(new ArrayList<String>()); Hashtable<String, String> ht = new Hashtable<>();//安全类 HashMap<String, String> hm = new HashMap<>();// static  Map synchronizedMap(Map m)  返回由指定地图支持的同步(线程安全)映射。 //将线程不安全的HashMap()集合类变成线程安全的集合类 Map<String, String> sm = Collections.synchronizedMap(new HashMap<String, String>());    }}