JUC
文章平均质量分 94
多线程高并发知识点
造火箭的小伙
知道的越多,不知道的越多。
展开
-
Synchronized锁升级过程
Synchronized锁升级过程锁在jdk1.6之前只有两种状态:无锁和有锁两种状态,在jdk1.6之后,对synchronized进行了优化,增加了两种状态,现在锁一共有四种状态:无锁、偏向锁、轻量级锁、重量级锁。无锁也是一种状态,锁的类型和状态存在对象头的MarkWord中,在申请锁、锁升级等过程中JVM都需要读取对象的MarkWord中的数据。偏向锁为什么要引入偏向锁呢?因为进过HotSpot的作者大量的研究发现,大多数情况下,锁不仅不存在多线程竞争,而且总是由同一个线程多次获得,为了让线原创 2021-05-05 16:32:29 · 141 阅读 · 0 评论 -
volatile关键字了解吗?
volatile关键字了解吗?我们知道Java支持多个线程同时访问一个对象或对象的成员变量。每个线程都可以拥有这个变量的成员拷贝(虽然对象以及成员变量分配的内存是共享内存中的,但每个执行的线程还是会拥有一份拷贝。这样可以加速程序的执行,多核处理器就拥有这样的特性)。Java语言规范第三版中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致性的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,如果一个字段被声明成volatil原创 2021-04-05 21:44:38 · 90 阅读 · 2 评论 -
Synchronized同步的原理
Synchronized同步的原理Java中利用synchronized实现同步基础,可以有一下三种形式:对于普通同步方法,锁是当前实例对象。对于静态同步方法,锁是当前类的Class对象对于同步方法块,锁是Synchronized括号里配置的对象1.synchronized同步语句块的情况public class SynchronizedDemo { public void method() { synchronized (this) { System.out.println("syn原创 2021-05-05 12:50:37 · 617 阅读 · 0 评论