多线程同步的14条

1

非线程安全即多个线程对同一个对象中的实例变量进行并发访问时产生了脏读;线程安全即在并发访问时,获取的实例变量值是经过同步处理的,不会出现脏读。对于实例变量(共享资源)的并发访问会出现非线程安全问题,而方法内的局部变量则不会出现该问题。

2

线程安全的做法:对实例变量进行同步控制、用方法私有变量代替实例变量(参数传递的方式)、使用ThreadLocal保存。

3

synchronized可作用于方法、代码块,同一时间只能有一个线程执行synchronized修饰的代码。

4

synchronized和static同时修饰方法时,则对当前方法所在的Class持有锁,锁住的是当前的Class,即Class锁;synchronized修饰非static方法时,持有的是当前类对象的锁,即对象锁;synchronized(对象),则持有的是这个对象的锁;synchronized(this),则持有的是当前类对象的锁。

5

Class锁和对象锁修饰的方法是异步交叉执行的,因为它们的锁不同。

6

synchronized(类)方式和Class锁的作用是一样的。

7

synchronized修饰非static方法方式或synchronized(对象)方式进行同步控制时,多个线程并发访问同一个类的多个不同实例的相同方法时,这些方法的执行不是排队执行的,是异步交叉执行,只有多个线程同时持有相同的对象锁,这些线程之间才会同步执行。

8

要想实现多线程并发的同步控制,则需要对同一个类的同一个实例进行锁的控制,即使用同一个"对象监视器"。

9

synchronized有锁重入的功能,即synchronized方法或代码块的内部调用本类的其它synchronized方法或代码块可以再次得到锁。当存在父子类继承关系时,子类可以通过锁重入调用父类的同步方法。

10

当程序抛出异常时,持有的锁会自动释放。

11

同步的特性不可以继承。

12

volatile会强制从主内存中读取变量的值,而不是从线程私有的工作内存中取值;volatile会强制将工作内存中的值写入主内存中。

13

volatile只能保证数据的可见性,即保证多线程间的数据可见;不能保证数据的原子性,不具备同步性,即可能出现脏读,当新值依赖于旧值时就会出现。

14

在使用原子类时,如果方法与方法之间的调用不是原子的,可能会出现执行结果的不安全。

本文分享自微信公众号 - JavaQ(Java-Q)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-08-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏量子位

首都机场以后也能刷脸坐飞机了

李根 假装发自 T2 量子位 报道 | 公众号 QbitAI ? AI也要发起对机场的改造啦。 8月23日,百度与首都机场签署战略合作协议,称将共同打造智慧机场...

37960
来自专栏云计算D1net

2017年五大关键云趋势:容器、AI等

不可否认,云计算已经改变了大小型企业的运营模式。 一项来自思科的最新市场分析表明,未来5年内全球云IP流量将以2015年至2020年间30%的年复合增长率增长,...

37550
来自专栏云计算D1net

裸机云服务优缺点

裸机云计算服务综合了物理服务器和公共云两者的优点,但是这可能并不适用于所有的工作负载。用户在做出决定之前应权衡利弊。 在某些情况下,公共云服务无法为管理员提供全...

82180
来自专栏IT派

区块链将如何改变保险业?上海已率先展开区块链实验

要说起科技领域最炙手可热话题的必然离不开区块链技术。这一脱胎于比特币的底层技术,以7年多的稳定运行证明了其高度安全可靠的架构和算法设计,同时凭借分布式账本和智能...

41950
来自专栏云计算D1net

混合云计算vs雾计算

如今,许多行业厂商都在不断努力提高其经营效率,而希望实现这一目标的一个具体途径是投资新技术,更新软件,推进安全计划。随着技术领域的所有变化,网络安全是越来越难以...

40370
来自专栏互联网数据官iCDO

nEqual Mini-DMP:建立高效用户连接及实时精准触达

? nEqual 是业界领先的赋能“智慧商业”的数据智能技术提供商,是精硕科技集团下专注数据技术的事业部。nEqual以数据和技术为支撑,为企业实现营销自动化...

50570
来自专栏Netkiller

食品安全溯源区块链解决方案探索

Netkiller Blockchain 手札 <netkiller@msn.com> 文档始创于2018-02-10 版权 © 2018 Netkiller...

1.4K90
来自专栏量子位

三种主流机器人全被黑客攻破,让马斯克忧心的杀人机器并不遥远

李杉 允中 编译整理 量子位 出品 | 公众号 QbitAI ? 科幻小说和电影里,经常会有类似“天网”的角色。而在设想自动化技术给人类负面影响时,我们通常会想...

35330
来自专栏云计算D1net

开源要“开”得安全高效:开源云计算的五大发展趋势

编者按:过去几年,开发者几乎都会用到开源。开源现象日益普遍,有赖于业内人士的智慧和努力。不过,更重要的还是开源本身的优势:能够轻易整合多种多样的开源解决方案。在...

38560
来自专栏Golang语言社区

Web开发须知:URL编码与解码

通常如果一样东西需要编码,说明这样东西并不适合传输。原因多种多样,如Size过大,包含隐私数据,对于Url来说,之所以要进行编码,是因为Url中有些字符会引起...

54530

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励