Java并发编程的艺术
SZStudy
这个作者很懒,什么都没留下…
展开
-
并发编程的挑战
一、多线程不一定快 当并发执行累加操作不超过百万次时,速度会比串行执行累加操作慢。这是因为线程有创建和上下文切换的开销。 减少上下文切换的方法: 1.无锁并发编程:多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID按照Hash算法取模分段,不同的线程处理不同段的数据。 2.CAS算法:Java的Atomic包使用CAS算法来更新数据,而不需要...转载 2018-11-12 10:33:41 · 214 阅读 · 0 评论 -
Java并发机制的底层实现原理
volatile关键字 对volatile进行写操作时,CPU会做什么事情: 1)将当前处理器缓存行的数据写回到系统内存。 2)这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效。 为了提高处理速度,处理器不直接和内存进行通信,而是先将系统内存的数...转载 2018-11-12 16:28:20 · 208 阅读 · 0 评论 -
Java内存模型-Java内存模型中的顺序一致性
如果程序是正确同步的,程序的执行将具有顺序一致性(Sequentially Consistent)——即程序的执行结果与该程序在顺序一致性内存模型中的执行结果相同。 顺序一致性内存模型有两大特性。 1)一个线程中的所有操作必须按照程序的顺序来执行。 2)(不管程序是否同步)所有线程都只能看到一个单一的操作执行顺序。在顺序...转载 2018-11-16 13:59:06 · 335 阅读 · 0 评论 -
Java内存模型-Java内存模型的基础
Java内存模型的基础 1.Java内存模型的抽象结构局部变量,方法定义参数和异常处理器参数不会在线程之间共享,它们不会有内存可见性问题,也不受内存模型的影响。 2.Java线程之间的通信由Java内存模型控制,...转载 2018-11-15 10:33:04 · 230 阅读 · 0 评论