- 博客(7)
- 问答 (1)
- 收藏
- 关注
原创 虚假唤醒,国内的开发能不能不要创建这么多名词?
是多生产者多消费者,在notifyAll场景下由于if编码(if是顺序向下执行)+并发执行(wait阻塞)引起的,第三步,一个消费者抢到执行权,由于之前阻塞在await处,是if顺序执行就不在执行了.消费者端是if场景下,生产消费线程启动,生产,消费者是阻塞在await的!哪里有什么虚假唤醒,仅仅是if是顺序执行导致的唤醒后管不住了,扯犊子名词。第一步生产者生产 ,notifyAll唤醒消费者,最近突然听到了虚假唤醒这个名词,查了下!第二步其中一个消费者正常消费。虚假唤醒说白了是什么问题?
2023-06-08 09:46:53
41
原创 ThreadLocal源码分析
类关系 ThreadlLocal有静态内部类ThreadLocalMap ThreadLocalMap中有静态内部类Entry 有个坑点:threadLocalMap的构造方法需要传入当前threadLocal,通过threadLocal的hash值来进行定址(多个threadLocal有可能hash冲突,这时候向后延找空节entry数组节点,如果延到最后都没有空节点触发扩容) Thread: 成员变量 ThreadlocalMap 使用: Thread–持有成员变量ThreadLocalMap–tmap持
2022-08-09 09:26:52
87
原创 荷兰国旗算法
逆序对:如果列表中左边的数比右边的大,称为逆序对 或者说右边的数比左边小 如果求相邻的那么直接遍历比较即可 如果不相邻也算,那么可以利用拆分排序(左边无序,右边有序(提高查询效率,二分法查等于他或者比他大一点数为位置)) 第一次拆为2个数组左边是从头到倒数第二位,末尾一个 第二次左边头到N-2,右边N-2和n-12个有序的 …第X次左边头到N-X,右边倒数的X个数字(N-X,N有序) 荷兰国旗: 一个数组arr,将大于num的放在右边,小于num的放在左边 实际上就是粗排序,声明2个临时数组,左边和右边,大
2022-02-13 22:11:23
183
原创 小和问题...
小和:一个数据或者列表中的左边比他小的数据的和 可以理解为归并排序,拆分的子数组,左边是他前面的数据,右边是他自己组成的数据 为了保证复用(每次求完毕下个数复用前面的),由于数组的长度固定,使用list来储存前面的归并有序数据 public ArrayList<Integer> sumSmall(int[] a) { ArrayList<Integer> left = new ArrayList<>(); LinkedBlockingDeque<
2022-02-13 18:12:14
413
原创 static和transient的序列化
这里写自定义目录标题 网上很多说satic不能序列化,但是测试是可以的 transient不能被序列化 jdkj:ava version "1.8.0_131 代码---- package cn.jpa; import java.io.*; class Person implements Serializable { public static void main(String[] args) t...
2020-03-27 18:05:11
211
空空如也
NIO链接就报java.lang.IllegalArgumentException
2021-11-17
TA创建的收藏夹 TA关注的收藏夹
TA关注的人