Concurrency
文章平均质量分 67
陈振阳
我翻开历史一查,这历史没有年代,歪歪斜斜的每页上都写着仁义道德四个字。我横竖睡不着,又仔细看了半夜,才从字缝缝里看出字来。满页都写着两个字是,吃人。
展开
-
Java Thread 状态机
Thread#sleep、thread#wait和thread#join被其他线程thread#interrupt()之后,会抛出 InterruptedException;需要在线程中处理InterruptedException;LockSupport.park() 方法不回抛出InterruptedException,程序继续往下执行;参考Java线程Thread的状态解析以及状态转换分析 多线程中篇(七)Java面试:线程状态机...原创 2021-08-06 02:35:31 · 296 阅读 · 0 评论 -
Java Volatile 的应用场景
4.4 volatile的应用场景4.4.1 正确使用volatile条件条件一: 写入变量时并不依赖变量的当前值;或者能够确保只有单一线程能够修改变量的值条件二: 变量不需要与其他的状态变量共同参与不变约束条件三: 变量访问不需要额外加锁通俗点: 当一个变量依赖其他变量或变量的新值依赖旧值时,不能用volatile4.4.2 volatile使用场景适用场合:多个线程读,一个线程写的场合使用场景:通常被 作为标识完成、中断、状态的标记,值变化应具有原子性充分利用其可见性:即volatil转载 2021-08-05 19:34:53 · 6216 阅读 · 1 评论 -
让我们找出并发编程 bug 的罪魁祸首吧!
各位童鞋好啊,在编程世界中,谈的并发,大家可能都会觉得并发编程难,那么并发编程为什么难呢?因为容易出bug呀!那为什么容易出bug呢,这还得从三大罪魁祸首说起了。所以今天Darren君想和大家聊一下并发编程bug的罪魁祸首。头号罪魁祸首-可见性先来可见性吧,什么是可见性?其实就是一个线程对某个共享变量的修改,其他线程能够立刻看到,大家可能觉得这不是理所当然的吗?当然不是了!众所周知,计算机为了提高性能,加入了缓存,多核cpu,每颗cpu都有自己的缓存,就是因为加入了缓存,导致cpu和内存之间的数据就存在转载 2021-08-05 16:45:31 · 238 阅读 · 0 评论 -
并发理论基础:并发问题产生的三大根源
并发问题变幻莫测,一谈到并发就显得非常高深,一般的程序员对于并发问题也是头疼不已,但是随着网络互联越来越普遍,大规模用户访问网站程序也越来越频繁,并发问题又无法避免。在我们解决并发问题前首先要理解产生并发问题的根源是什么,所有并发处理的工具只是针对这些根源问题的其中一种解决方案,如果只去了解解决方案而不理解问题的根源是什么,那么我们就很难正确的定位问题并对症下药。所以要写好并发程序我们首先就要深入理解并发问题产生根源是什么?起因:如何最大化的利用CPUCPU运算速度和IO速度的不平衡一直是计算机优化的转载 2021-08-05 16:36:58 · 702 阅读 · 0 评论 -
并发编程中原子性、可见性、有序性这些特性的起源?
作者:不才陈某链接:https://www.zhihu.com/question/434023055/answer/1618396442来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。前言在高并发的情况下,你的程序是不是经常出现一些诡异的BUG,每次都是花费大量时间排查,但是你有没有思考过这一切罪恶的源头是什么呢?幕后那些事CPU、内存、I/O设备的速度差异越来越大,这也是程序性能的瓶颈,根据木桶理论,最终决定程序的整体性能取决于最慢的操作-读写I/O设备,单方面的提高转载 2021-08-05 16:07:49 · 246 阅读 · 0 评论 -
带你了解缓存一致性协议 MESI
带你了解缓存一致性协议 MESI原创 2021-04-28 21:11:40 · 142 阅读 · 0 评论