木子的昼夜  

2021年4月4日

摘要: Condition 之前文章有写wait/notify/notifyAll Condition作用类似,可能会多一些功能 比如:支持不响应中断、可指定时间点结束等待、可多条件(new 多个Condition) Condition的await 与wait类似 必须在获取锁的时候才能await 一、 使 阅读全文
posted @ 2021-04-04 18:03 木子的昼夜 阅读(56) 评论(0) 推荐(0) 编辑
 
摘要: 之前文章写AQS的时候有说过公平锁的代码 这里以非公平锁来看一下 面试的时候设计模式:模板方法 在AQS里体现的淋漓尽致 ,你要是从设计模式扯到这里,然后你正好又看过AQS在ReentrantLock中的实现,那你就可以让面试官眼前一亮 Lock lock = new ReentrantLock(f 阅读全文
posted @ 2021-04-04 18:02 木子的昼夜 阅读(38) 评论(0) 推荐(0) 编辑
 
摘要: ReentrantLock 一、 使用 1.1 简单使用 public class LockTest { // 新建锁 Lock lock = new ReentrantLock(); public static void main(String[] args) { // 测试 LockTest t 阅读全文
posted @ 2021-04-04 18:01 木子的昼夜 阅读(27) 评论(0) 推荐(0) 编辑
 
摘要: 一、 线程切换 线程的切换受操作系统的调度控制 简单流程是这样的: 操作系统让cpu执行线程1 线程1执行到指令003的时候 操作系统让cpu执行线程2 cpu会将线程1的执行半成品放到缓存中 cpu接着执行线程2 cpu执行线程2的004指令的时候 操作系统又让cpu执行线程1 cpu从缓存拿出线 阅读全文
posted @ 2021-04-04 17:58 木子的昼夜 阅读(524) 评论(0) 推荐(0) 编辑
 
摘要: 用户线程&守护线程&线程组&线程优先级 如果把公司比喻成进程, 那么你和我就是用户线程, 后勤部门就是守护线程(负责给你订水,打扫办公环境等), 每个项目组就是一个线程组, 程序员等级就是优先级(高级程序员 总比初级程序员容易获取资源 概率大 但不是肯定)。 一、 用户线程&守护线程 public 阅读全文
posted @ 2021-04-04 17:34 木子的昼夜 阅读(71) 评论(0) 推荐(0) 编辑
 
摘要: 上一篇说了类加载器、双亲委派机制、自定义类加载器 一、 问题ask 1. 自定义类加载器的上一层也就是父类加载器是谁 System.out.println(new MyClassLoader().getParent()); 输出结果:sun.misc.Launcher$AppClassLoader@ 阅读全文
posted @ 2021-04-04 16:42 木子的昼夜 阅读(196) 评论(0) 推荐(1) 编辑

2021年3月11日

摘要: 1. 类加载初始化 Loading 把一个class文件加载到内存 Linking Verification 校验class文件符不符合class文件标准 Preparation 静态变量赋默认值 static int count = 10; 在这一步count = 0 默认值 Resolution 阅读全文
posted @ 2021-03-11 16:53 木子的昼夜 阅读(41) 评论(0) 推荐(0) 编辑

2021年3月9日

摘要: 一、前言 什么是AQS (AbstractQueuedSynchronizer)翻译过来叫抽象同步队列, 他是除synchronized以外的另一种同步机制 Lock锁的实现 就依赖AQS 后期会写Lock锁的使用及原理 AQS的中心思想是:现场来了看一下共享资源是否空闲,如果共享资源空闲就上锁(修 阅读全文
posted @ 2021-03-09 21:08 木子的昼夜 阅读(18) 评论(0) 推荐(0) 编辑

2021年3月8日

摘要: 一、前言 cas 一般认为是compare and swap 也可以认为是compare and set cas涉及三个值 1)P 变量内存地址 2)E 期望值 ,CPU做计算之前拿出来的旧值 3) X 需要设置的新值 原子操作为: 拿出内存地址当前的值A ,比较A == E ? 是 : 设置P内存 阅读全文
posted @ 2021-03-08 17:57 木子的昼夜 阅读(56) 评论(0) 推荐(0) 编辑

2021年3月4日

摘要: 一、前言 说起java的线程之间的通信,难免会想起它,他就是 wait 、notify、notifyAll 他们三个都是Object类的方法, 受到 final 和 native 加持 ,也就造就了他们是不能被重写的 wait() 等待 ,意味让出当前线程的锁,进入等待状态,让其他线程先用会儿锁 , 阅读全文
posted @ 2021-03-04 10:02 木子的昼夜 阅读(96) 评论(0) 推荐(0) 编辑