1.synchronized的三种同步方式
synchronized实现原子性与可见性:
一个线程执行临界区代码过程如下:
1 获得同步锁
2 清空工作内存
3 从主存拷贝变量副本到工作内存
4 对这些变量计算
5 将变量从工作内存写回到主存
6 释放锁
可见,synchronized既保证了多线程的并发有序性,又保证了多线程的内存可见性。
2.volatile(在实现了原子性的前提下才能实现可见性有序性,做到真正的同步)
3.ThreadLocal实现多线程私有变量的一个副本。(使用场景有限,只能做到线程互不影响)
4.通过util.concurrent.atomic包中提供了创建了原子类型变量的工具类 ,其实就是封装了原子性的基本类型操作。
5.BlockingQueue阻塞队列(适用于生产者与消费者场景的多线程同步)
网友评论