![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JDK底层
都是底层
这个作者很懒,什么都没留下…
展开
-
Java Core 之 字节码与类创建过程
package io.renren.modules.manyThread; /** * @description: * @author: 李晋平 * @email 17696094686@163.com * @create: 2021-03-09 16:32 **/ class Son extends Father{ static { System.out.println("Son的静态代码块"); } { System.out.pr原创 2021-03-09 16:46:15 · 2918 阅读 · 0 评论 -
ReentrantLock源码分析
lock方法的具体 尝试获取锁,如果成功就返回 尝试获取锁失败,调用addWaiter()构建新节点并把新节点入队 然后调用acquireQueued()再次尝试获取锁,如果成功,直接返回 如果再次失败,再调用shouldParkAfterFailedAcquire()将节点等待状态设置为等待(将头节点的状态waitStatus为-1),并调用parkAndCheckInterrupt()阻塞当前线程 如果被唤醒了,会继续在acquireQueued()的for循环再次尝试获取锁,如果成功就返回 如果步成原创 2021-01-11 15:56:41 · 2917 阅读 · 0 评论 -
ArrayList使用foreach循环删除元素为啥报错Exception in thread “main“ java.util.ConcurrentModificationException
List<String> list = new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); for (String s:list) { if(s.equals("5")){ list.remove(s);原创 2020-10-14 15:30:22 · 3129 阅读 · 0 评论 -
synchronized细化底层原理
MyObject lock = new MyObject(); synchronized(lock){ } java对象都是分为对象头和实例对象两块的,其中实例对象就是大家平时看到的那些变量数据,然后对象头包含两块东西,一个是Mark Word(包含hashCode、锁数据、GC数据等等),另一个是Class Metadata Address(包含了指向类的元数据的指针) 在Mark Word里就是一个指针,是指向对象实例monitor的地址,这个monitor是C++实现的,不是java实现的,这个.原创 2020-09-20 16:55:15 · 3375 阅读 · 0 评论