线程不安全的应对措施
来源:互联网 发布:白骑士大数据电话 编辑:程序博客网 时间:2024/05/16 14:00
在应用程序中,线程不安全一般都是由于共享内容造成的。例如java中的有状态的单例、静态被共享使用,就可能出现线程不同步,产生脏读写。
对应措施总结如下:
1、不管是单例还是静态,尽量不要保存状态,也就是内部不要保存数据,只提供常量和方法。例如去掉setter,设置私有,使用final实现不变性。
2、如果单例对象存在状态,则通过克隆或者new来使用其副本。
3、使用ThreadLocal封装线程不安全的对象,这样每个线程使用的都是副本,但是牺牲一定的空间。
4、自己实现线程同步器,协调各个线程,难度较大,适用性差,还会造成性能下降。
5、在不使用上述的情况下,还可以:
保证线程不安全的对象只读。
1、在方法中使用局部变量。
2、使用future模式和callable。
此外还有一些是运行机制造成的,如指令重排序,非原子操作,锁机制等。
阅读全文
0 0
- 线程不安全的应对措施
- 搜索引擎面临的挑战及应对措施
- 线程不安全的类型
- Servlet线程的不安全
- 线程不安全的情况
- 线程不安全的ArrayList
- 一个“线程不安全”的例子
- 包装线程不安全的集合
- 线程安全/不安全的讨论
- HashMap的线程不安全体现
- ArrayList的线程不安全问题
- 线程不安全的实体Bean
- java--线程不安全的类
- 项目团队的发展阶段特点、问题、应对措施、领导风格
- VeryCD转型的应对措施,让我们继续分享互联网!!!
- 手机充电系统面临的挑战和应对措施
- 导致网站被搜索引擎惩罚的原因及应对措施
- IT项目的常见风险及应对措施
- 第一篇博客,写在迷茫无措时
- anaconda安装新模块
- http协商缓存VS强缓存
- 自顶向下,逐步求精
- app.render和res.render的区别
- 线程不安全的应对措施
- HTTP强缓存和协商缓存
- 数据结构,算法与应用 第二章 练习题 Part-A(初级排序乐园) / 简单的内存消耗判断
- 究竟啥才是互联网架构“高并发”
- 数据结构与算法C++ 第二章 练习题 Part-B (排序乐园升级版)
- DAY1开始
- 自定义biblatex
- 写给测试工程师
- vue子组件的使用和事件传递