
Java并发编程学习
文章平均质量分 82
菠萝菠萝派
人不犯二枉少年
展开
-
深入理解Java内存模型(二)——重排序
本文转自:http://ifeve.com/java-memory-model-2/数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:上面三种情况,只要重排序两个操作的执行顺序,程序的执行结果将会被改变。 前面提到过,编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵守数据依赖性,编译器和处理器不会改变存转载 2015-02-14 02:23:04 · 559 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
本文转自:http://ifeve.com/java-memory-model-1/并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状转载 2015-02-14 01:46:10 · 634 阅读 · 0 评论 -
深入理解Java内存模型(五)——锁
本文转自:http://ifeve.com/java-memory-model-5/锁的释放-获取转载 2015-02-14 18:43:51 · 494 阅读 · 0 评论 -
聊聊并发(一)深入分析Volatile的实现原理
本文转自:http://ifeve.com/volatile/引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。它在某些情况下比synchronized的开销更小,本文将深入分析在硬件层面上In转载 2015-02-14 19:19:21 · 588 阅读 · 0 评论 -
深入理解Java内存模型(三)——顺序一致性
本文转自:http://ifeve.com/java-memory-model-3/数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。 当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将转载 2015-02-14 04:11:41 · 455 阅读 · 0 评论 -
聊聊并发(二)Java SE1.6中的Synchronized
本文转自:http://ifeve.com/java-synchronized/引言在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中为了减少获得锁和释放锁带来的性能消耗而引入的偏向锁和轻量级锁,以及锁的存储结构和升级过程。术语转载 2015-02-14 22:48:47 · 680 阅读 · 0 评论 -
聊聊并发(三)Java线程池的分析和使用
本文转自:http://ifeve.com/java-threadpool/引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监转载 2015-02-14 23:26:01 · 764 阅读 · 0 评论 -
深入理解Java内存模型(四)——volatile
本文转自:http://ifeve.com/java-memory-model-4/volatile的特性我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExam转载 2015-02-14 13:39:41 · 507 阅读 · 0 评论 -
同步与Java内存模型
同步与Java内存模型(一)序言原文:http://gee.cs.oswego.edu/dl/cpj/jmm.html 转自:http://ifeve.com/syn-jmm-pre/ 作者:Doug Lea 译者:萧欢 校对:丁一,方腾飞先来看如下这个简单的Java类,该类中并没有使用任何的同步。final class SetCheck { private int a = 0;转载 2015-12-12 12:10:27 · 577 阅读 · 0 评论