java并发编程的艺术
雷正伟
这个作者很懒,什么都没留下…
展开
-
第三章 Java内存模型
一、java内存模型的基础 1、关键问题 在并发编程中,主要要处理两个关键问题,即线程间的通信与同步。线程通信机制有两种,一种是共享存储,一种是消息传递。同步主要是指程序中用于控制不同线程间操作发生的相对顺序的机制。 2、java内存的抽象模型 Java线程之间的通信由JMM进行控制,抽象内存模型如下图: JMM通过控制主内存与每个线程对应的本地内存的交互,来为java程序员提供可见性的保证。 ...原创 2019-07-13 17:40:50 · 141 阅读 · 0 评论 -
第一章 并发编程的挑战
并发编程的挑战 并发编程的目的是为了让程序运行的更快,最大程度地让程序并行执行。但是在并发编程的过程中,也会面临许多的挑战,例如上下文切换、死锁以及资源限制的问题。 1、上下文切换 多线程程序在执行的过程中,需要进行线程切换,这就涉及到上下文切换的问题。上下文切换需要额外的资源和时间开销,所以过于频繁的上下文切换会拖慢程序的执行速度。 一般减少上下文切换的方法如下: 1、无锁并发编...原创 2019-07-05 17:32:49 · 136 阅读 · 0 评论 -
第二章 Java并发机制的底层实现原理
Java并发机制的底层实现原理 1、volatile的应用 volatile要保证共享变量的可见性。java规范中对volatile的定义如下:Java编程语言允许线程访问共享变量,为了确保共享变量能够被准确和一致地更新,线程应该用排他锁单独获得这个变量。计算机系统可以使用缓存一致性模型来保证volatile的可见性(例如MESI协议)。 值得注意的是volatile只保证可见性,而不...原创 2019-07-05 21:23:23 · 133 阅读 · 0 评论