
JVM
qq_41423755
这个作者很懒,什么都没留下…
展开
-
面试题——synchronized为什么是非公平锁?
非公平锁:新来的线程不会考虑entryList队列是否有等待线程,而是直接参与竞争锁。这就导致,线程尝试获取锁失败,进入阻塞队列的顺序和最终被唤醒的顺序是不一致的,也就是说你先进入队列,不代表你就会先被唤醒,因为有可能被新来的线程通过自旋抢到锁。当持有锁的线程释放锁时,该线程会执行以下两个重要操作:(1)先将锁的持有者owner 属性赋值为 null;(2)唤醒等待链表中的一个线程(假定继承者?存疑)。在这两个步骤之间,如果有其他线程刚好在尝试获取锁(例如自旋),则可以马上获取到锁。原创 2023-12-10 15:24:00 · 171 阅读 · 1 评论 -
什么是虚引用?
虚引用:如果一个对象仅持有虚引用,它就和没有任何引用一样,在任何时候都可能被垃圾回收。唯一作用就是配合引用队列监控(添加虚引用的)对象被垃圾回收的活动,当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到一个引用队列中。程序可以通过引用队列知晓监控对象是否将要被回收,以便在他们被回收之前可以采取一些行动。原创 2023-12-08 14:34:26 · 111 阅读 · 0 评论