- 博客(81)
- 资源 (2)
- 问答 (6)
- 收藏
- 关注
原创 有一种设计思想叫物理上基于...逻辑上基于...
新增数据往数组后边放,但要根据当前索引,找到父节点,父节点索引在(n-1)/2,然后与父节点进行大小比较,若为最小堆,若当前节点比父节点小,则和父节点交换位置,再继续和上层父节点比较,直至不小于父节点;1)priorityBlockingQueue物理上按照数组存储,逻辑上按照最大堆或最小堆来维护,或者说是完全二叉树或者近似完全二叉树;2)netty的内存池,物理上按照数组存储,逻辑上按照二叉树来维护;
2024-07-07 10:04:20
127
原创 cyclicbarrier自己真的能循环吗
而cyclicbarrier中多了一个步骤,是每个线程都被移动至Condition的等待队列,当规定数量的线程都到齐后,最后一个线程一声零下,每个线程都会被移回至reentrantlock的阻塞队列并依次执行后续任务;cyclicbarrier源码中,当g不等于generation时,当前线程就会退出for循环,执行业务逻辑,如果业务逻辑只执行一次循环,那么当前线程就会直接结束了;所以cyclicbarrier的循环指的是它的源码会自动将相关参数复位,至于是否循环执行业务代码,这个由业务层决定;
2024-07-07 09:50:49
240
原创 线程池execute与submit方法
而submit方法虽然也是调用execute,但是由于传入的参数是futureTask,重写了runnable接口的run方法,在该方法中对执行任务出现的异常进行了catch,并且没有再向外抛出,这就把异常吃掉了;如下图,catch后直接抛出了异常,并且一直往外层方法追溯,并没有进行catch;execute方法中执行出现异常,程序打印堆栈信息,直接终止;
2024-06-29 08:51:47
207
原创 算法题中try...catch...妙用
tpId=37&tqId=21240&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D37&difficulty=undefined&judgeStatus=undefined&tags=&title=3)Integer.parseInt(str, radix),报错则进入catch中。2)遍历字符串中的每个字符,调用Character.isDigit方法。
2024-06-29 08:19:44
232
java线程池中为啥使用不可重入锁?
2020-03-24
java中wait和park底层实现原理一样吗?都是调用POSIX中的函数吗?
2020-03-22
java中线程池为啥用hashset实现?
2020-03-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人