JDK源码
贺博文
上帝为每只笨鸟都准备了一根矮树枝。
展开
-
Java volatile关键字的作用
1.可见性JVM定义了线程与主内存之间的抽象关系:共享变量存储在主内存,每个线程都有一个私有的本地内存,本地内存保存了该线程使用到的主内存的副本拷贝,线程对变量的所有操作都必须在本地内存中进行,而不能直接读写主内存的变量。例如下面的程序运行上述的代码,你会发现 在main方法打印 running is false 之后,程序并没有正常退出,而是一直在跑着 while(running) 这个死循环。当时当我们尝试把变量 running 加上 volatile 后在运行,程序就能正.原创 2020-06-23 22:47:23 · 385 阅读 · 0 评论 -
Synchronized和CAS
CASCAS的全称是 Compare And Swap(Compare And Exchange) 比较并交换,乐观锁 / 自旋锁 / 轻量级锁 / 无锁cas(v, a, b) , 变量v,期待的值a,要修改的值b以java.util.concurrent.atomic包下的AtomicInteger 为例,原创 2020-06-21 21:09:46 · 405 阅读 · 0 评论 -
每天学习一点点之HashMap
HashMap默认大小static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16HashMap最大容量,2的30次方 static final int MAXIMUM_CAPACITY = 1 << 30;HashMap负载系数,当size超过容量的0.75(初始化大小为 16 * 0.75 = ...原创 2020-03-09 14:52:30 · 161 阅读 · 0 评论