JAVA_多线程同步方式

2018-08-21  本文已影响0人  Shokka

https://www.cnblogs.com/XHJT/p/3897440.html

1.synchronized的三种同步方式

synchronized实现原子性与可见性:

一个线程执行临界区代码过程如下:
1 获得同步锁
2 清空工作内存
3 从主存拷贝变量副本到工作内存
4 对这些变量计算
5 将变量从工作内存写回到主存
6 释放锁
可见,synchronized既保证了多线程的并发有序性,又保证了多线程的内存可见性。

2.volatile(在实现了原子性的前提下才能实现可见性有序性,做到真正的同步)
3.ThreadLocal实现多线程私有变量的一个副本。(使用场景有限,只能做到线程互不影响)
4.通过util.concurrent.atomic包中提供了创建了原子类型变量的工具类 ,其实就是封装了原子性的基本类型操作。
5.BlockingQueue阻塞队列(适用于生产者与消费者场景的多线程同步)

https://blog.csdn.net/a369414641/article/details/48317181

上一篇 下一篇

猜你喜欢

热点阅读