没有合适的资源?快使用搜索试试~ 我知道了~
Java的线程安全与不安全集合.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 160 浏览量
2022-07-10
09:54:56
上传
评论
收藏 140KB DOCX 举报
温馨提示
试读
13页
使用Collections.synchronizedList(new ArrayList<>()):内部直接将接受的List对象传递给静态内部类SynchronizedList对象,然后Collections.synchronizedList(new ArrayList<>())返回的List对象的调用方法都是直接调用输入List对象的方法,但是加了synchronized,类似装饰器模式,也是对输入List的一种增强
资源详情
资源评论
资源推荐
Java 的线程安全与不安全集合
线程不安全集合:
� ArrayList
� LinkedList
� HashMap
� HashSet
� TreeMap
� TreeSet
� StringBulider
线程安全集合:
� Vector
� HashTable
� Properties
集合线程安全与解决方案
ArrayList 线程安全问题
package com.raicho.mianshi.mycollection;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
/**
* @author: Raicho
* @Description:
* @program: mianshi
* @create: 2020-07-17 15:32
**/
public class ArrayListConcurrentDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
for (int i = 0; i < 30; ++i) {
new Thread(() -> {
list.add(UUID.randomUUID().randomUUID().toString().substring(0, 4
));
System.out.println(list);
}).start();
}
}
}
运行报错:
>
ArrayList 是线程不安全的,add()方法并没有加锁
(synchronized),多线程环境下会抛出
ConcurrentModificationException
解决方案:
� 使用 Vector 类(使用了 synchronized),效率极低
� 使用 Collections.synchronizedList(new ArrayList<>()):内部直接将接受的 List 对
象 传 递 给 静 态 内 部 类 SynchronizedList 对 象 , 然 后
Collections.synchronizedList(new ArrayList<>())返回的 List 对象的调用方法都是
直接调用输入 List 对象的方法,但是加了 synchronized,类似装饰器模式,也是对
输入 List 的一种增强:
package com.raicho.mianshi.mycollection;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
/**
* @author: Raicho
* @Description:
* @program: mianshi
* @create: 2020-07-17 15:32
**/
public class ArrayListConcurrentDemo {
public static void main(String[] args) {
List<String> list = Collections.synchronizedList(new ArrayList<>());
剩余12页未读,继续阅读
小兔子平安
- 粉丝: 209
- 资源: 1940
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Docker容器配置进阶
- tensorflow-gpu-2.7.4-cp37-cp37m-manylinux2010-x86-64.whl
- 多段线、 圆、弧转多段线(仅我可见)
- tensorflow-2.7.2-cp38-cp38-manylinux2010-x86-64.whl
- yeyue-p8Yi4-ve4a83792.apk
- tensorflow-gpu-2.7.3-cp38-cp38-manylinux2010-x86-64.whl
- 五相感应电机矢量控制模型MATLAB
- RGLED (1) (1).circ
- IMG_20240427_215747.jpg
- python下前端WEB学习笔记
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0