高并发场景下的线程安全

1,数据单线程内可见。单线程总是安全的,通过限制数据仅在单线程内可见,可以避免数据被其他线程篡改,最典型的就是线程局部变量,他储存在独立虚拟机栈桢的局部变量表中,其他线程毫无瓜葛。TheardLocal就是采用这种方式来实现线程安全的。

2,只读对象。只读对象总是安全的,他的特性是允许复制,拒绝写入,最典型的只读对象有string,Integer等。一个对象想要拒绝任何写入,必须要满足以下条件,使用final关键字修饰类,避免被继承,使用private final 关键字避免属性被中途修改,没有任何更新方法,返回值不能为可变对象。

3,线程安全类,某些线程安全类的内部有非常明确的线程安全机制,比如,Stringbuffer,就是一个线程安全类,他采用的synchorized 关键字来修饰相关方法。

4,同步与锁机制。如果想要对某个对象进行并发更新操作,但又不属于上述的三类,需要开发工程师在代码中实现安全的同步机制。虽然这个机制支持的并发场景很有价值,但非常复杂且容易出现问题。

核心思想,要么只读,要么加锁。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值