并发
苏云南雁
喜爱技术,热爱学习,终身学习者
展开
-
java并发5——synchronized和volatile关键字
一,synchronized以虚拟的叫号系统为例采用并发程序叫号时会出现跳号、重号、超过最大值等现象。参照JMM模型,https://blog.csdn.net/qq_22059611/article/details/95211836可知由于工作空间数据对其他线程不可见、且叫好操作不为原子操作,所以会产生这类问题。为了解决这个问题,引入了锁的概念,在一个线程对共享数据进行操...原创 2019-12-03 16:51:50 · 223 阅读 · 0 评论 -
java并发1——CPU多级缓存
为什么需要CPU cache:CPU的频率太快了,快到主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费资源。所以cache的出现,是为了缓解CPU和内存之间速度的不匹配问题(结构:cpu——>cache——>memory)CPU cache有什么意义:(1)时间局部性:如果某个数据被访问,那么在不久的将来它很可能被再次访问;(2)...原创 2019-06-25 15:27:52 · 173 阅读 · 0 评论 -
java并发2——CPU多级缓存——缓存一致性(MESI)
用于保证多个CPU cache之间缓存共享数据的一致。如下图所示(M表示被修改,E是独享状态,S表示共享状态,I表示无效状态):四种状态说明:M表示被该缓存行只被缓存在改CPU的缓存中并且是被修改过的,因此它与主存间的数据是不一致的,该缓存行的内存未来是要被写回主存的;E是独享状态,它的缓存行只被共享在该CPU中,它的状态是和主存中的一致的,当有其他CPU读取该CPU时,变成共享状态...原创 2019-06-25 15:52:17 · 338 阅读 · 0 评论 -
java并发3——CPU多级缓存——乱序执行优化
处理器为提高运算速度而做出违背代码原有顺序的优化在单核时代这种优化是没有问题的,但是在多核时代,这种优化可能会存在问题。...原创 2019-07-09 17:04:43 · 336 阅读 · 0 评论 -
java并发4——Java内存模型(Java Memory Model,JMM)
要讲java内存模型(Java Memory Model, JMM),先需要从几个基本概念讲起。1,程序、进程与线程程序指一段代码,是静态的概念;而进程指运行中的代码,是动态的概念;而线程相对而言概念上没那么好解释,按照执行效果来说就是进程的小弟,拥有进程资源的小一号独立运行单元。为什么要讲这3个概念?因为并发针对的就是这个小弟,线程。2,JVM与线程JVM与线程有什么关...原创 2019-07-09 17:07:32 · 179 阅读 · 0 评论 -
保证每段代码只会执行一次的例子
public class AtomicExample6 { private static AtomicBoolean isHappened = new AtomicBoolean(false); // 请求总数 public static int clientTotal = 5000; // 同时并发执行的线程数 public static int t...原创 2019-07-18 15:27:12 · 262 阅读 · 0 评论