线程安全与共享资源(线程控制逃逸规则)

代码线程安全是指:

当多个线程同时行某一个代码块时,不会引起竞态条件,也不会导致数据不一致等情况。那么这段代码就是线程安全的。


在多线程中资源的共享一定要小心,因为不同的资源它的线程安全性都不一样,错误的使用容易引起线程的不安全。

在这里有一个规则称为 ”线程控制逃逸规则“ ,是指:

如果一个资源的创建,使用,销毁都在同一个线程内完成,
且永远不会脱离该线程的控制,则该资源的使用就是线程安全的。

线程安全需要区分的资源:

1、局部变量

局部变量存在于方法中,他的生命周期就是从在方法内的定义出开始,到方法执行结束时被销毁。它存在于每一个线程栈中,每一个线程栈中的数据是独立的。因此局部变量是线程安全的。

2、局部对象的引用

局部对象的引用,它是一个引用,声明范围也是从方法的定义出开始,在方法结束时被销毁,同样也是被存储与线程栈中。但是需要注意,所引用的对象实体是存放在堆栈区域的,因此是否线程安全需要注意。

这是需要用到”线程控制逃逸规则“。如果说这个引用的线程的声明周期也是在线程使用的方法范围内,或者是作为参数传递进来的,其他线程并不会访问到这个对象,此时就是线程安全的。否则不是线程安全的。

3、对象成员

与上线的局部对象的引用类似。但是对象成员是属于一个类的数据成员,因此一般情况下是被多个线程所同时使用的,因此他不是线程安全的,在有对 对象成员操作的地方一定要同步,保护线程的安全。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值