![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 78
向阳而生,逆风翻盘
这个作者很懒,什么都没留下…
展开
-
java线程池
keepAliveTime,就是线程池中除了核心线程之外的其他的最长可以保留的时间,因为在线程池中,除了核心线程即使在无任务的情况下也不能被清 除,其余的都是有存活时间的,意思就是非核心线程可以保留的最长的空闲时间,创建线程和销毁线程的花销是比较大的,这些时间有可能比处理业务的时间还要长。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。原创 2022-09-02 00:22:45 · 213 阅读 · 0 评论 -
Java线程死锁的原因和条件
在系统中所配置的非剥夺性资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷入僵局。可把系统中的资源分为两类,一类是可剥夺性资源,是指进程在获得这类资源后,该资源可以再被其它进程或系统剥夺。还有一种是所谓的临时资源,这是指由一个进程产生,被另一进程使用一短暂时间后便无用的资源,故也称为消耗性资源,它也可能引起死锁。(2)请求和保持条件:指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其它进程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不放。原创 2022-09-02 00:18:25 · 432 阅读 · 0 评论 -
HashMap初始容量为什么是2的n次幂及扩容为什么是2倍的形式
HashMap的初始容量都是2的n次幂的形式存在的,而扩容也是2倍的原来的容量进行扩容,也就是扩容后的容量也是2的n次幂的形式存在的,下面就来说明一下为什么是2的n次幂的形式! 先来看一下源码,也就是向HashMap中添加元素,或者扩容时是怎么存放元素的。 第一个截图是向HashMap中添加元素putVal()方法的部分源码,可以看出,向集合中添加元素时,会使用(n - 1) & hash的计算方法来得出该元素在集合中的位置;而第二个截图是HashMap扩容时调用resize()..原创 2020-09-02 19:42:54 · 1179 阅读 · 0 评论