线程安全性

1.什么是线程安全性

引用《java并发编程实战》中的话

在线程安全性的定义中,最核心的概念就是正确性。
我们也可以这么定义:当多个线程访问某个类的时,这个类始终都能表现出正确的行为,那么我们就可以称这个类是线程安全的。

那么如何编写线程安全的代码呢?

1). 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享可变状态的访问

2 ).对象的状态是指存储在状态变量(例如实例或者静态域)中的数据

一个对象是否需要时线程安全的额,取决于他是否被多个线程访问。要使得对象是线程安全的,需要采用同步机制来协同对对象可变状态的访问。

如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误,有3个方法可以修复这个问题:
1.不在线程之间共享这个状态变量
2.将状态变量修改为不可变的变量
3.在访问状态变量的时候使用同步

并发编程的bug源头我们追本溯源基本上可以总结为3点:

源头之一:缓存导致的可见性问题
源头之二:线程切换带来的原子性问题
源头之三:编译优化带来的有序性问题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值