![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 86
bh_xiaoxinba
这个作者很懒,什么都没留下…
展开
-
根据java内存模型理解并发出现的问题
原子性1、某些读写共享变量的操作如果不是原子操作,多线程并发的情况下会出现并发问题。 2、原子性实现了多个线程并发访问某段代码的时候,使这些线程能够有序访问。因为实现原子操作代码的一旦被执行,就不能被打断,其他线程想要访问的时候,只能阻塞等待。 3、java中实现原子性使用了synchronized关键字,在synchronized块之间的代码具备原子性。可见性并发问题并不只是由于原子性导致的;原创 2016-09-12 22:21:27 · 695 阅读 · 0 评论 -
java内存模型中的先行发生原则
先行发生原则前言由上一篇,我们知道并发问题的一个原因是有序性,而java中volatile和synchronized可以保证有序性; 但是在java中,并不是所有的操作都是由volatile和synchronized实现的,java中存在”先行发生“的原则。 “先行发生”原则是判断数据是否存在竞争、线程是否安全的主要依据;什么是先行发生原则?先行发生原则是指:如果说操作A先行发生于操作B,也就是原创 2016-09-12 22:33:29 · 2285 阅读 · 0 评论 -
java内存模型
1、内存模型的相关概念缓存一致性问题。 通常称这种被多个线程访问的变量为共享变量。也就是说,如果一个变量在多个CPU中都存在缓存(一般在多线程编程时才会出现),那么就可能存在缓存不一致的问题。为了解决缓存不一致性问题,通常来说有以下2种解决方法: 通过在总线加LOCK#锁的方式 通过缓存一致性协议 这2种方式都是硬件层面上提供的方式。 上面的方式1会有一个问题,由于在锁住总线期间,其他CPU无法原创 2016-09-18 20:21:12 · 246 阅读 · 0 评论