高并发环境下线程安全的维度考量

1 数据单线程内可见

单线程总是安全的。通过限制数据仅在单线程内可见,可以避免数据被其他线程篡改。最典型的就是线程局部变量,它存储在独立虚拟机栈帧的局部变量表中,与其它线程没有关系。ThreadLocal就是采用这种方式来实现线程安全的。

2 只读对象

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

3线程安全类

某些线程安全类的内部有着非常明确的线程安全机制。比如StringBuffer就是一个线程安全类,它采用synchronized关键字来修饰相关方法。
4同步与锁机制
如果想要对某个对象并发更新操作,但又不属于以上描述的三类,需要开发人员在代码中实现安全的同步机制。那么在这个环境中容易出现这个问题,以后再来讨论如何去避免并发引发的问题。
线程安全的核心理念就是要么只读,要么加锁。合理利用好JDK提供的并发包,往往能够很好的解决问题。并发包的具体使用呢,以后再来讨论这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值