![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
oneFaceThickSkin
这个作者很懒,什么都没留下…
展开
-
netty 学习
netty in action原创 2023-01-30 22:03:50 · 99 阅读 · 0 评论 -
jdk读写锁
误区:读写锁公平读锁抢占的时候,是去判断,队列中的第一个是不是写锁,如果是,那么就写入。公平不公平其实体现在是否要直接抢占,如果前面有写锁,而且被感知,无论公平与否,都会阻塞读锁。获取写锁后,可以降级为读锁。参照https://www.jianshu.com/p/cd485e16456eprotected final int11 tryAcquireShared(int unused) { Thread current = Thread.currentThread();原创 2021-08-05 18:03:59 · 174 阅读 · 0 评论 -
threadLocalMap 为啥用弱引用
结论:为了让threadlocal的回收逻辑与使用该threadlocal的线程的回收逻辑相独立threadlocal举例来说可以作为一个对象中的引用,比如这个对象回收了,但线程是复用的(比如线程池)如果entry是强引用,就会引起threadlocal一直不回收。为了防止类似情况发生,采用的弱引用。有人说我平时都是用静态变量啊?没错,静态变量会导致threadlocal一直被强引用指着,threadlocalMap中的弱引用强引用并没有什么区别,刚刚提到的只有threadloca.原创 2021-08-05 17:22:40 · 589 阅读 · 0 评论 -
CyclicBarrier demo
CyclicBarrier 这个东西到达一定程度后,同时唤醒某个值,里面有个lock,同时有个condition,condition,设置一个初始值数量 int threadNum = 5; CyclicBarrier barrier = new CyclicBarrier(threadNum, new Runnable() { @Override public void run() { ..原创 2021-07-12 17:45:14 · 137 阅读 · 0 评论 -
volatile 可见性 以及synchronized到jmm
volatile带有可见性,可见性是指什么,可见性就是说我一个地方修改的,另外一个线程能看到。为啥会有这种问题呢?这是因为多核cpu导致的。对于某个核的cpu来说,寄存器存储的东西可能和另一个cpu的寄存器存储的东西不一样,包括后面为了处理cpu和内存之间的延时的数量级鸿沟而引入的 L1 L2cache 等各个cpu核之间都可能不一样。有些东西我要保证多个核之间的cpu的数值一致,或者说弱一点,这个东西对另外一个东西可见之前的volatile可见性的实现,是通过重型的锁总线,但是这个东西性能原创 2021-07-08 19:22:08 · 49 阅读 · 0 评论