在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多个线程之间执行程序的相对...
分类:
编程语言 时间:
2016-01-22 17:17:02
阅读次数:
286
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个监视器锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class Volatil...
分类:
编程语言 时间:
2016-01-19 23:30:28
阅读次数:
252
一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/detail?id=133http://ifeve.com/jmm-faq/1.1.2. 了解JVM各种参数及调优1.1.3. 学习使用Java工具j...
分类:
编程语言 时间:
2016-01-18 10:30:02
阅读次数:
410
来源:hollischuang(@Hollis_Chuang)链接:http://www.hollischuang.com/archives/489一、基础篇1.1 JVM1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收http://www.jcp.org/en/jsr/d...
分类:
编程语言 时间:
2016-01-18 00:32:14
阅读次数:
240
【转】http://my.oschina.net/chihz/blog/58035 文章写的非常好,为作者点赞。JAVA内存模型 对于我们平时开发的业务应用来说,内存应该是访问速度最快的存储设备,对于频繁访问的数据,我们总是习惯把它们放到内存缓存中,有句话不是说么,缓存就像是清凉油,哪里有问题就抹....
分类:
编程语言 时间:
2016-01-14 12:13:25
阅读次数:
231
注:在阅读本章之前,先要了解Java内存模型,见上一章《附1 Java内存模型与共享变量可见性》,链接如下:http://www.cnblogs.com/java-zhao/p/5124725.html1、volatile用法具体的用法可以参照《第二章 ConcurrentHashMap源码解析》中...
分类:
其他好文 时间:
2016-01-12 22:52:44
阅读次数:
180
JMM: Java Memory Model(Java内存模型),围绕着在并发过程中如何处理可见性、原子性、有序性这三个特性而建立的模型。可见性: JMM提供了volatile变量定义、final、synchronized块来保证可见性。 例如:线程a在将共享变量x=1写入主内存的时候,如何保...
分类:
移动开发 时间:
2016-01-10 14:20:26
阅读次数:
280
深入理解Java内存模型(一)——基础并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间...
分类:
编程语言 时间:
2016-01-07 18:16:13
阅读次数:
192
java内存模型如上图,每个java线程有自己的pcregisters和javastacks进程内的所有的java线程共享methodarea和heapmethodarea也就是java的持久代再来看下heap的结构具体的规则一堆一堆的,不再赘述如何定位内存泄露呢?先看一些常用的命令:1.jstat-gcpid可以显示gc的信息,查看gc的..
分类:
编程语言 时间:
2015-12-29 19:39:17
阅读次数:
273
一、基础篇
1.1 JVM
1.1.1. Java内存模型,Java内存管理,Java堆和栈,垃圾回收
http://www.jcp.org/en/jsr/detail?id=133
http://ifeve.com/jmm-faq/
1.1.2. 了解JVM各种参数及调优
1.1.3. 学习使用Java工具
jps, jstack, jmap, ...
分类:
编程语言 时间:
2015-12-23 11:01:46
阅读次数:
126