
java
文章平均质量分 91
geek-wmy
一位专注的码农
展开
-
ConcurrentHashMap原理
这样就可以在不影响读操作的情况下,同时支持多个线程的并发写操作。ConcurrentHashMap的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。CAS 其实是一种乐观锁,一般有三个值,分别为:赋值对象,原值,新值,在执行的时候,会先判断内存中的值是否和原值相等,相等的话把新值赋值给对象,否则赋值失败,整个过程都是原子性操作,没有线程安全问题。原创 2023-03-21 22:26:35 · 605 阅读 · 0 评论 -
HashMap原理
哈希冲突是由于hash算法被计算的数据是无限的,而计算后的结果范围是有限的,所以总会存在不同的数据计算后得到的值是一样的,那将会存在同一个位置,就会出现哈希冲突。加载因子 = 填入表中的元素个数 / 散列表的长度加载因子越大,填满的元素越多,空间利用率越高,但发生冲突的机会变大了;加载因子越小,填满的元素越少,冲突发生的机会减小,但空间浪费了更多了,而且还会提高扩容rehash操作的次数。冲突的机会越大,说明需要查找的数据还需要通过另一个途径查找,这样查找的成本就越高。原创 2023-03-12 20:21:58 · 2329 阅读 · 0 评论 -
volatile内存语义
当声明共享变量为volatile后,对这个变量的读/写将会很特别。为了揭开volatile的神秘面纱,下面将介绍volatile的内存语义及其实现。1.volatile的实现 理解volatile特性的一个好方法是吧对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面通过示例来进行说明。class VolatileFeaturesExample { volatile long v1 = 0L; //使用volatile声明64位的long型变量 .原创 2021-04-10 08:26:09 · 158 阅读 · 0 评论 -
Java并发机制的底层实现原理
Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java斜体样式中所使用的并发机制依赖于JVM的实现和CPU的指令。1.volatile的应用...原创 2021-04-02 07:21:26 · 259 阅读 · 1 评论