Java并发编程的艺术(十二)——线程安全

什么是『线程安全』?如果一个对象构造完成后,调用者无需额外的操作,可以随意地在多线程环境下使用,并不发生错误,那么这个对象就是线程安全的。线程安全的几种程度线程安全性的前提:对『线程安全性』的讨论必须建立在多线程间存在共享变量这一前提,若对象在多条线程间没有共享数据,那这个对象一定是线程安全的!绝对的线程安全上述线程安全性的定义即为绝对线程安全的情况,即:一个对象构造完之后,调用者无需任何额外的操作
摘要由CSDN通过智能技术生成

这里写图片描述

1. 什么是『线程安全』?

如果一个对象构造完成后,调用者无需额外的操作,就可以在多线程环境下随意地使用,并且不发生错误,那么这个对象就是线程安全的。

2. 线程安全的几种程度

线程安全性的前提:对『线程安全性』的讨论必须建立在对象内部存在共享变量这一前提,若对象在多条线程间没有共享数据,那这个对象一定是线程安全的!

2.1. 绝对的线程安全

上述线程安全性的定义即为绝对线程安全的情况,即:一个对象在构造完之后,调用者无需任何额外的操作,就可以在多线程环境下随意使用。
绝对的线程安全是一种理想的状态,若要达到这一状态,往往需要付出巨大的代价。
通常并不需要达到绝对的线程安全。

2.2. 相对的线程安全

我们通常所说的『线程安全』即为『相对的线程安全』,JDK中标注为线程安全的类通常就是『相对的线程安全』,如:Vector、HashTable、Collections.synchronizedXXX。
对于相对线程安全的类,使用它们时一般不需要使用额外的保障措施,但对于一些特定的使用场景,仍然需要额外的操作来保证线程安全,如:

// 读线程
Thread t1 = 
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值