• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

如何使用Collections解决多线程安全问题

java 来源:白夜光 8次浏览

在Java中,集合框架中许多常用的实现类ArrayList、Linkedlist、 HashSet、TreeSet、
HashMap和TreeMap都是线程不安全的。如果有多个线程访问它们,而且有超过一个线程试图修改它们,就会存在线程安全问题。所以Collections提供了多个类方法可以把它们保存成线程同步的集合,从而可以解决多线程并发访问集合时的线程安全问题。
代码示例:
//—线程不安全的写法:

List<String> list = new ArrayList<>();

//—线程安全写法:

List<String> list2 = Collections.synchronizedList(new ArrayList<String>());

//—插件引用:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;

//---全部代码:
public class CollectionsClassDemo { 
	public static void main(String[] args) { 
		//ArrayList
		List<String> list = new ArrayList<>();
		List<String> list2 = Collections.synchronizedList(new ArrayList<String>());
		//Linkedlist
		List<String> list3 = new LinkedList<>();
		List<String> list4 = Collections.synchronizedList(new LinkedList<String>());
		//HashSet
		Set<String> set = new HashSet<>();
		Set<String> set2 = Collections.synchronizedSet(new HashSet<String>());
		//TreeSet
		Set<String> set3 = new TreeSet<>();
		Set<String> set4 = Collections.synchronizedSet(new TreeSet<String>());
		//HashMap
		Map<Integer,String> map = new HashMap<>();
		Map<Integer,String> map2 = Collections.synchronizedMap(new HashMap<Integer,String>());
		//TreeMap
		Map<Integer, String> map3 = new TreeMap<>();
		Map<Integer,String> map4 = Collections.synchronizedMap(new TreeMap<Integer,String>());
	}
}

完。
猜您喜欢的文章:
2018UI课程总结(UI理论篇)
什么是Java算数运算符?
令程序员泪流满面的瞬间,实在忍不住笑了
Oracle约束怎么写?
AE基础界面设置和旋转加载案例
《酒店管理系统——桑拿、沐足模块》项目研发阶段性总结
Oracle 基础知识汇总
PS快捷键
如何使用Oracle视图?
AE圆点加载动画制作过程
如何使用System获取系统环境变量


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)