【0】README 0.1)本文部分文字描述转自“深入理解jvm”,旨在学习“java内存模型与线程” 的基础知识; 【1】概述 1)并发处理的广泛应用是使得 Amdahl 定律代替摩尔定律称为计算机性能发展源动力的根本原因; 2)Amdahl 定律:该定律通过系统中并行化与串行化的比重来描述多处理 ...
分类:
编程语言 时间:
2016-04-04 11:44:17
阅读次数:
279
volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键之前,我们先来了解一下与内存模型相关的概念和知识,然后分析了volatile关键字的实现原理,最后给出了几个使用volatile关键字的场景1. 内存模型的相关概念当程序在运行过程中,会将运算需要的数据从主存复制一份到CPU的高速缓存...
分类:
编程语言 时间:
2016-04-01 18:10:37
阅读次数:
189
转: https://www.zhihu.com/question/39139518 http://www.jcp.org/en/jsr/detail?id=133 Java内存模型 jps, jstack, jmap, jconsole, jinfo, jhat, javap, … BTrace ...
分类:
编程语言 时间:
2016-03-23 21:58:06
阅读次数:
455
Java的内存模型分为主存储器和工作存储器两种。 主存就是实例位置所在的区域。主存为全部线程锁共用;每一个线程都拥有自己独立的作业区,称为工作存储器。 当一个线程须要对某对象的一些字段进行操作时,就会把这些须要的信息从主存储器copy到自己的工作存储器。而这个拷贝就叫做工作拷贝。 讲到这里大家都能够
分类:
编程语言 时间:
2016-03-14 12:06:42
阅读次数:
162
转自:http://www.cnblogs.com/BangQ/p/4045954.html 1.JMM简介 2.堆和栈 3.本机内存 4.防止内存泄漏 1.JMM简介 i.内存模型概述 Java平台自动集成了线程以及多处理器技术,这种集成程度比Java以前诞生的计算机语言要厉害很多,该语言针对多种
分类:
编程语言 时间:
2016-02-27 15:03:52
阅读次数:
262
在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递. 在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态
分类:
编程语言 时间:
2016-02-26 18:44:43
阅读次数:
169
为并发吞吐性能所做的优化 ConcurrentHashMap使用了一些技巧来获取高的并发性能,同时避免了锁。这些技巧包括: 为不同的Hash bucket(所谓hash bucket即不同范围的key的hash值)使用多个写锁; 利用JMM(Java Memory Model,java内存模型)的不
分类:
其他好文 时间:
2016-02-16 23:25:42
阅读次数:
187
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则: 在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。 初次读一个包含final域的对象的引用,与随后
分类:
编程语言 时间:
2016-02-03 01:06:51
阅读次数:
265
volatile的特性 当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码: class Volat
分类:
编程语言 时间:
2016-02-03 01:06:27
阅读次数:
267
锁的释放-获取建立的happens before 关系 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。 下面是锁释放-获取的示例代码: class MonitorExample { int a = 0; public synchr
分类:
编程语言 时间:
2016-02-03 01:05:59
阅读次数:
281