
Java疑难杂症
yxjhhdx
十年一线互联网经验
展开
-
被面试官吊打系列之JUC之 线程本地变量ThreadLocal 之 源码分析
其实 ThreadLocal 命名不太好,应当改名叫做 thread-local variable,即线程本地变量。一个ThreadLocal实例就是一个线程本地变量。它的特点是就是 任何时候同一个线程可以通过这个 ThreadLocal实例变量 访问到绑定的值 (其实有点绕);需要注意的是 init方法,它默认什么都不做,通常我们需要覆写它,当然,这个完全是按照需要来定的。 每次线程执行get的...原创 2020-04-09 01:38:43 · 277 阅读 · 0 评论 -
被面试官吊打系列之JUC之 可重入读写锁ReentrantReadWriteLock 之 源码详尽分析
可重入读写锁 ReentrantReadWriteLock 其实基本上模拟了文件的读写锁操作。ReentrantReadWriteLock 和ReentrantLock 的差别还是蛮大的; 但是也有很多的相似之处;ReentrantReadWriteLock 的writerLock 其实就是相当于ReentrantLock,但是它提供更多的细腻的控制;理解什么是读锁、写锁非常重要,虽然实际工作...原创 2020-04-08 23:08:44 · 276 阅读 · 0 评论 -
被面试官吊打系列之JUC之 LockSupport 源码分析
LockSupport的主要方法是:LockSupport#LockSupportLockSupport#setBlocker(Thread t, Object arg)LockSupport#unpark(Thread t)LockSupport#park(java.lang.Object)LockSupport#parkNanos(java.lang.Object, long)...原创 2020-04-07 19:59:56 · 294 阅读 · 0 评论 -
被面试官吊打系列之 可重入独占锁 ReentrantLock
/*Written by Doug Lea with assistance from members of JCP JSR-166Expert Group and released to the public domain, as explained athttp://creativecommons.org/publicdomain/zero/1.0//package java...原创 2020-04-07 13:21:19 · 462 阅读 · 0 评论 -
被面试官吊打系列之AbstractQueuedSynchronizer即AQS(边吐血边详细分析)
理解Cancellation即取消的机制,Cancellation 包括了中断引起的失败、其他失败 和超时引起的取消;正是Cancellation使得问题变得复杂, 因为它可能随时发生 ;两个关键概念: 同步队列 和 条件队列。 这两者是绝对不同的东西,不能搞混!!引入这样的概念是很有必要的。同步队列 命名来源于 sync queue; 为什么是sync,关键是对sync的理解,(这个词其...原创 2020-04-06 14:28:40 · 396 阅读 · 0 评论 -
Java疑难杂症之wait 和notify
基本原理1 重量级锁通过对象内部的监视器(monitor)实现的,其中monitor的本质是依赖于底层操作系统的Mutex Lock实现2 操作系统实现线程之间的切换需要从用户态到内核态的切换,切换成本非常高3Java对象头存在monitor这个对象,在hotspot虚拟机中,通过ObjectMonitor类(C++实现的类)来实现monitor4wait和notify是用来...原创 2020-04-03 23:50:05 · 360 阅读 · 0 评论