
并发
文章平均质量分 81
geek-wmy
一位专注的码农
展开
-
ConcurrentHashMap1.7的实现原理与使用
为什么要使用ConcurrentHashMap? ConcurrentHashMap是线程安全且高效的HashMap。在并发编程中,如果只是使用HashMap的话可能导致程序死循环。而使用线程安全的HashTable效率又非常低,所以便有了ConcurrentHashMap。 1.线程不安全的HashMap 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。下面一个是一个会引起死循环的示例。 final Has.原创 2021-04-19 20:53:07 · 566 阅读 · 0 评论 -
Java中锁的介绍
本文将介绍Java并发包中与锁相关的组件,以及这些API和组件的使用方式和实现细节。 1.Lock接口 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源(但是优先锁可以允许多个线程并发的访问共享资源,比如读写锁)。在Lock接口出现之前,Java程序靠synchronized关键字实现锁的功能。而Java SE 5以后,并发包中新增了Lock接口,用来实现锁的功能,只是在使用的时候需要显示的获取和释放锁。虽然他缺少了隐式获取释放锁的便捷性,但是却拥有了锁获取与.原创 2021-04-17 08:30:41 · 240 阅读 · 0 评论 -
final域的内存语义
与前面介绍的锁和volatile相比,对final域的读和写更像是普通的变量访问。下面将介绍final域的内存语义 1.final域的重排序规则 对于final域,编译器和处理器要遵守两个重排序规则。 1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 2)初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。 下面通过一个实例说明这两个规则 public class FinalExamp.原创 2021-04-11 14:19:10 · 154 阅读 · 0 评论 -
锁的内存语义
众所周知,锁可以让临界区互斥执行,这里将介绍锁的另一个同样重要,但常常被忽视的功能:锁的内存语义 1.锁的释放-获取简历的happens-before关系 锁是Java并发编程中最重要的同步机制。 ...原创 2021-04-11 13:07:43 · 143 阅读 · 0 评论