![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 61
GasDuck
这个作者很懒,什么都没留下…
展开
-
[redis数据结构]跳表的实现
跳表的实现,对面试很重要吧原创 2022-07-02 17:14:00 · 100 阅读 · 1 评论 -
ThreadLocal源码解读
new在new ThreadLocal的时候,采用了斐波那锲散列法生成对应的hash使得hash值分布的更加平均private static int nextHashCode() { return nextHashCode.getAndAdd(HASH_INCREMENT);}setpublic void set(T value) { //从本线程拿到ThreadLocalMap Thread t = Thread.currentThread(); ThreadLocalMa原创 2022-03-12 09:04:49 · 94 阅读 · 0 评论 -
Semaphore和countDownLatch完全解析
Semaphore和countDownLatch差不多,都涉及到共享锁,也涉及到PROPAGATE,所以一起讲,至于ReentrantReadWriteLock以及CyclicBarrier,这个之后再说,如果不了解aqs请查看之前的博文SemaphoreSemaphore semaphore = new Semaphore(2); //设置state值semaphore.acquire();semaphore.release();初始化的时候设置一个值,如果线程acquire数量超过了这个值,原创 2022-03-12 09:03:56 · 378 阅读 · 0 评论 -
AQS解析(以ReentrantLock公平锁为例)
AQS解析以ReentrantLock公平锁为例AQS中进程节点的状态线程的2种等待模式:SHARED:表示线程以共享的模式等待锁(如ReadLock)EXCLUSIVE:表示线程以互斥的模式等待锁(如ReentrantLock),互斥就是一把锁只能由一个线程持有,不能同时存在多个线程使用同一个锁线程在队列中的状态枚举:CANCELLED:值为1,表示线程的获锁请求已经“取消”SIGNAL:值为-1,表示该线程一切都准备好了,就等待锁空闲出来给我(比如现在头节点的值为-1,那么说明头节点原创 2022-03-12 09:00:40 · 211 阅读 · 0 评论 -
红黑树完全解析(基于TreeMap)
红黑树的例子在线例子网址https://www.cs.usfca.edu/~galles/visualization/RedBlack.html内部节点及类定义Get/Set方法省略static class RBNode<K extends Comparable<K>, V> { private RBNode parent; private RBNode left; private RBNode right; private boolean color;原创 2022-03-09 12:16:33 · 417 阅读 · 0 评论