java并发编程实战(二)—线程安全
来源:互联网 发布:淘宝图片包邮怎么设置 编辑:程序博客网 时间:2024/06/05 04:07
1 volatile变量:
volatile是一种比synchronized关键字更轻量级的同步机制。
当线程A首先写入一个volatile变量并且线程B随后读取该变量时,在写入volatile变量
之前对A可见的所有变量的值,在B读取了volatile变量后,对B是可见的。因此,从内存
可见性的角度来看,写入volatile变量相当于退出同步代码块,而读取volatile变量相当于进入同步代码块。
使用条件:
(1)对变量的写入操作不依赖变量的当前值,或者可以确保只有单线程更新变量的值
(2)该变量不会与其他状态变量一起纳入不变性条件中
(3)在访问变量时不需要加锁
2 发布和逸出
发布:使对象能够在当前作用域之外访问。最简单的发布对象方法:将对象引用保存为静态类型
逸出:某个不应该被发布的对象被发布出去。(类中的类属性)
当发布某个对象时,可能间接发布其他对象:同其他对象在同一数组或集合里。
3 线程封闭 : 单线程访问数据。
常见应用:(1)swing (2)jdbc的connection对象
3.1 Ad-hoc线程封闭
维护线程封闭性的职责完全由程序实现。
3.2 栈封闭:只能通过局部变量才能访问对象。
3.3 ThreadLocal类 提供一些方法为每个使用该变量的线程都存有一份独立的副本。
核心为ThreadLocalMap类,key为线程,value为该变量值。spring中就是使用ThreadLocal类
来保证bean的单例类型(线程安全)。
0 0
- java并发编程实战(二)—线程安全
- 《Java并发编程实战》读书笔记二:构建线程安全
- Java并发编程实战2-线程安全
- Java并发编程实战笔记(1)- 线程安全
- Java并发编程实战(一)线程安全
- Java并发编程实战笔记(1)-线程安全简介
- Java并发编程实践笔记(二)——chapter1(线程安全)
- Java并发编程(二)--java线程安全的一些基础
- 【Java并发编程实践】— 线程安全
- java并发编程实战第六章(5)使用带有延迟元素的线程安全列表
- Java并发编程实战 笔记(二) 线程安全性
- Java并发编程实战笔记(二)
- java并发编程实战(二)
- java并发实战读书笔记(一)-线程安全
- 探索并发编程(二)------写线程安全的Java代码
- 探索并发编程(二)------ 写线程安全的Java代码
- 探索并发编程(二)------写线程安全的Java代码
- 探索并发编程(二)------写线程安全的Java代码
- 10004---python学习之路-1 python基础操作
- MySql 数据库 提示:1045 access denied for user 'root'@'localhost' using password yes
- git学习心得1
- 面试题之二叉树
- python函数总结
- java并发编程实战(二)—线程安全
- es6学习笔记1-let与const
- 过滤器链
- Android开发艺术探索读书笔记(一):Activity生命周期
- 机器学习十大课程
- Arduino对57步进电机的控制
- 每个程序员都会的35个jQuery小技巧!
- Classpath entry org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER will not be exported or published. Runtim
- 1001-害死人不偿命的(3n+1)猜想 (15)