2020年11月19日
摘要:
List ArrayList 知识点 1、1.7之前默认初始容量是10,1.8开始是0,后面执行 add 方法后才会将内部用于存储数据的数组容量初始化为10,这样可以节省内存空间,防止创建后一直没有使用浪费空间。 2、扩容时机是添加的数据超过当前数组可以存储的容量时,会扩容为原来的1.5倍。 3、A
阅读全文
posted @ 2020-11-19 16:59
萌新J
阅读(244)
推荐(0)
2020年11月10日
摘要:
等待-唤醒模型中,之前一直使用if进行条件判断是否达到阀值来进行阻塞,比如下面的例子 1 public class CoTest01 { 2 public static void main(String[] args) { 3 SynContainer container = new SynCont
阅读全文
posted @ 2020-11-10 20:32
萌新J
阅读(632)
推荐(0)
2020年11月9日
摘要:
DCL:Double Check Lock ,意为双重检查锁。在单例模式中懒汉式中可以使用DCL来保证程序执行的效率。 1 public class SingletonDemo { 2 private static SingletonDemo singletonDemo = null; 3 priv
阅读全文
posted @ 2020-11-09 16:37
萌新J
阅读(524)
推荐(0)
2020年11月8日
摘要:
什么是AQS? AQS是JUC内容的基石,它本质上是一个抽象类,定义了多线程下资源争夺与释放的规则和过程,许多实现类都是继承于AQS,使用AQS的骨架。 AQS的原理 AQS总体上来看是由一个FIFO(先进先出)队列和一个state属性配合组成的。FIFO用来存储线程结点的,state属性用来表示资
阅读全文
posted @ 2020-11-08 11:33
萌新J
阅读(1949)
推荐(1)
2020年11月5日
摘要:
单线程下的程序,是一段代码一段代码按顺序执行,而一些代码在执行时往往用不到 CPU,这样CPU就得不到充分的利用,效率非常低下。所以 "并发编程" 这一概念就产生了,我们可以在没有用到 CPU 的时候去执行其他代码来提高总体代码的执行效率。比如在修改文件时,CPU 需要先等待读取文件,然后才能进行修
阅读全文
posted @ 2020-11-05 20:17
萌新J
阅读(297)
推荐(0)
2020年10月17日
摘要:
上篇博文在讲解 ConcurrentHashMap 时说到 1.7 中 put 方法实现同步的方式是使用继承了 ReentrantLock 类的 segment 内部类调用 lock 方法实现的,而在 1.8 中是使用 synchronied 锁住要添加数据对应数组的第一个值实现的,关于这两种锁的区
阅读全文
posted @ 2020-10-17 15:57
萌新J
阅读(892)
推荐(0)
2020年10月9日
摘要:
散列表 在了解hashmap之前,要先知道什么是散列表,因为hashmap就是在散列表结构基础上改造而成的。散列表,也叫哈希表,是根据关键码值(key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的
阅读全文
posted @ 2020-10-09 16:05
萌新J
阅读(1288)
推荐(2)