package day10;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 将集合或Map转换为线程安全。
* @author kaixu
*
*/
public class SyncDemo5 {
public static void main(String[] args) {
/*
* ArrayList与LinkedList都不是线程安全的。
*/
List<String> list= new ArrayList<String>();
list.add("one");
list.add("two");
list.add("three");
System.out.println(list);
//将给定集合转换为线程安全的的集合。
list = Collections.synchronizedList(list);
System.out.println(list); //输出并无任何区别 但此时已是线程安全的集合。
/*
* HashSet不是线程安全的。
*/
Set<String> set = new HashSet<String>(list);
System.out.println(set);
//将给定的set集合转换为线程安全的。
set = Collections.synchronizedSet(set);
System.out.println(set);
/*
* HashMap也不是线程安全的。
*/
Map<String, Integer> map = new HashMap<String,Integer>();
map.put("语文", 99);
map.put("数学", 98);
map.put("英语", 97);
System.out.println(map);
//将给定的Map转换为线程安全的。
map = Collections.synchronizedMap(map);
System.out.println(map);
/*
* API手册上有说明:就算是线程安全的集合那么其中对于元素的操作。
* 如:add,remove等方法都不与迭代器遍历做互斥,需要自行维护互斥关系。
*/
}
}
Java将集合Collection或Map转换为线程安全
最新推荐文章于 2025-08-23 14:51:11 发布
本文介绍如何在Java中将常见的Collection和Map转换为线程安全的实例,确保多线程环境下数据操作的正确性和并发安全性。通过使用Collections.synchronizedXXX方法或并发包下的ConcurrentHashMap等类,可以轻松将非线程安全的集合转化为线程安全的集合,提高程序的健壮性。

1887

被折叠的 条评论
为什么被折叠?



