多线程
文章平均质量分 70
飘啊飘飘啊飘
当我的儿子吧!
展开
-
JAVA并发之ConcurrentHashMap源码分析
JAVA并发之ConcurrentHashMap源码分析 HashMap并不能在多线程下保证数据安全,为了适应并发场景JUC包下提供了ConcurrentHashMap。 ConcurrentHashMap与HashMap比较相似,底层都是数组+链表+红黑树。其最大区别体现在put方法中。 保证HashMap的线程安全,就是保证hashMap的数据的线程安全,其数据包括、底层维护的数组、链表、红黑树以及map的size的线程安全。带着这个思路,可以很清楚地看懂ConcurrentHashMap源码。 Con原创 2021-04-26 23:58:35 · 130 阅读 · 2 评论 -
Java并发之lock源码分析
Java并发之lock源码分析 程序员自己管理锁的释放 lock()方法 final void lock() { //判断当前锁的状态,即STATE的是否为0,如果是0的话就将state改为1,表示当前锁空闲,当前线程抢占成功 if (compareAndSetState(0, 1)) //将当前线程记录 setExclusiveOwnerThread(Thread.currentThre原创 2021-04-25 17:12:59 · 87 阅读 · 0 评论 -
java并发之volatile
多线程之volatile 作用:保证变量的可见性 可见性问题的由来: 由于CPU比内存以及磁盘的速度快得多,CPU操作一个变量需要等到内存、磁盘读取成功。这时的CPU会死等在这里,极大的影响了CPU利用率。为了解决这个问题、硬件工程师先是增加了高速缓存,事先让一些常用变量加载到高速缓存中,这样CPU就不需要等待内存加载成功,这样提高了CPU的利用率,但是体验还是不行。为了提升CPU的利用率,发明了线程,在CPU死等的时候去运行其他的内容,极大地利用了CPU资源。但是工程师没有满足,为了得到更快的运行效率,提原创 2021-04-23 15:49:14 · 81 阅读 · 0 评论