1.线程安全

1.什么是线程安全类

    当多个线程访问一个类时,如果不用考虑这些线程在运行时环境下的交替执行和调度,并且不需要额外的同步以及在调用方代码不必要做其他的协调,这个类的行为依然是正确的,那么这个类是线程安全的类。


2.如何保证线程安全

   1.不要跨线程共享变量 

   2.共享状态变为不可变的 

   3.在任何访问共享变量的时候使用同步


3.原子操作

   1.原子操作是指不会被线程调度机制打断的操作;这种操作一旦开始,就一直运行到结束,中间不会换到另一个线程)

   2.java.util.concurrent.atomic包下实现了原子操作

   3.java中java.util.concurrent.atomic(CAS理论)+volatile(内存可见性)关键字

   4.a和b各为原子操作,但是a+b不等于原子操作

   5.原子操作可以保证线程安全,volatile关键字保证了内存可见性

    注:原子操作+volatile内存可见性达到了锁的效果

4.锁

   1.锁保证了内存的可见性

   2.锁保证了线程的互斥

   3.锁保证了a和b各为原子操作,但是a+b等于原子操作

   注:锁保证了原子性和内存可见性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值