![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 58
笔记
BolliBu
这个作者很懒,什么都没留下…
展开
-
Synchronized底层如何实现?锁升级过程
1、Synchronized底层是通过monitor对象来实现的。通过motitorenter和monitorexit方法来实现锁的开启和释放2、锁升级过程Java早期,synchronized属于重量级锁,因为在切换线程时实现用户态到核心态的转换,需要较长时间,时间成本较高。在jdk1.6之后,从JVM层面对synchronized进行了较大优化,引入了偏向锁、轻量级锁。(锁可以升级但不能降级,但偏向锁可以可以被重置为无所状态)偏向锁升级过程:1、Load-and-test,也就是简单判断一下当前原创 2022-05-08 17:24:52 · 241 阅读 · 0 评论 -
Synchronized和Reetrantlock的区别
相同点1、都是用来协调多线程中的共享对象、变量的访问2、都是可重入锁,即同一线程可多次获得同一锁3、都保证了可见性和互斥性不同点1、底层实现:synchronized是Java的关键字,由JVM提供。而ReetrantLock是JDK1.5之后提供的API层面的2、是否可手动释放:synchronized自动释放,ReetrantLock通过lock和unlock配合try和finally实现3、是否可中断:synchronized只有再发生异常时可中断;而ReetrantLock可通过try原创 2022-05-08 16:23:04 · 818 阅读 · 0 评论 -
ConcurrentHashMap的put源码分析
public V put(K key, V value) { return this.putVal(key, value, false); } final V putVal(K key, V value, boolean onlyIfAbsent) { if (key != null && value != null) { int hash = spread(key.hashCode()); i原创 2022-04-23 17:40:18 · 356 阅读 · 0 评论 -
Java內存模型(Java Memory Model)
Q1:什麼是JMM?在特定的操作協議下,對內存或高速緩存進行讀寫訪問的過程抽象。(在JVM中,對內存/高速緩存的讀寫過程進行抽象,抽象成一個特定模型)Q2:它用來解決什麼問題?為了實現跨平台特性。(屏蔽各種硬件和操作系統的內存訪問差異,達到跨平台內存訪問一致的效果。)Q3:它是怎麼解決這類問題的?...原创 2022-04-23 17:29:23 · 181 阅读 · 0 评论 -
Java运行时数据区的组成、类加载过程以及对Java中的GC理解
Java运行时数据区的组成Java运行时数据区可以分为(5个):方法区、虚拟机栈、本地方法区、堆、程序计数器其中:线程私有:虚拟机栈、本地方法区、程序计数器线程共享:方法区、堆各组成的详细介绍参考资料如下参考资料1:https://blog.csdn.net/zuzhiang/article/details/118456471参考资料2:https://www.jb51.net/article/218556.htm类加载过程首先Java源文件通过编译器的javac指令转换为二进制的字节原创 2022-04-17 08:00:00 · 839 阅读 · 0 评论 -
创建一个对象的详细流程?(JVM相关)
创建一个对象的详细流程?(JVM相关):检查类加载->分配内存->初始化->设置对象头->执行构造函数原创 2022-04-10 19:41:56 · 270 阅读 · 0 评论