并发的两个关键问题 1、线程之间如何通信 2、线程之间如何同步 通信是指线程之间以何种机制来交换信息,在命令式编程中,通信机制有两种:共享内存和消息传递;JAVA的并发采用的是共享内存,线程之间的通信总是隐式进行。 同步指程序中用于控制不同线程间操作发生相对顺序的机制,在共享内存并发模型中,同步是显 ...
分类:
编程语言 时间:
2016-10-18 18:21:02
阅读次数:
322
八、Java编程建议 根据GC的工作原理,我们可以通过一些技巧和方式,让GC运行更加有效率,更加符合应用程序的要求。一些关于程序设计的几点建议: 1)最基本的建议就是尽早释放无用对象的引用。大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为 null.我们在使用 ...
分类:
编程语言 时间:
2016-10-17 20:09:04
阅读次数:
116
https://www.infoq.com/articles/The-OpenJDK9-Revised-Java-Memory-Model?spm=5176.100239.blogcont2606.16.vztbkO JSR 133: JavaTM Memory Model and Thread S ...
分类:
编程语言 时间:
2016-10-07 01:56:04
阅读次数:
200
本文为原创,根据《深入理解java虚拟机》和自己的一些理解进行整理,单纯和看其他人的博客感觉不如自己一点点的画和记录来的印象深刻。 JAVA内存模型: 判断对象是否已死(可以回收)的算法 方法区(永久代)回收的相关说明: 垃圾收集的算法: 1、标记 - 清除算法 包含标记和清除2个阶段,是最基础的算 ...
分类:
编程语言 时间:
2016-10-07 01:21:26
阅读次数:
199
1.多线程访问的共享资源存在线程安全问题, 无外乎访问两种共享资源。 1)多线程访问方法区数据。存在线程安全问题,通过加锁 2)多线程访问实例变量:被访问对象是单例时存在线程安全,被访问对象是多例时,是线程安全的。 来说说静态变量、实例变量、局部变量在多线程下的安全问题吧! (一)验证静态变量的线程 ...
分类:
编程语言 时间:
2016-09-22 17:00:03
阅读次数:
155
一、细说Java多线程之内存可见性(数据挣用) 1、共享变量在线程间的可见性 共享变量:如果一个变量在多个线程的工作内存中都存在副本, 那么这个变量就是这几个线程的共享变量 可见性:一个线程对共享变量值的修改,能够及时的被其他线程看到 Java内存模型(JMM,Java Memory Model): ...
分类:
编程语言 时间:
2016-09-22 10:06:45
阅读次数:
159
Question:在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? Answer:在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线程之间通过共享程序公共的状态,通过读-写内存中公共状态的方式来进行隐式的通信。同步指的是程序在控制多 ...
分类:
编程语言 时间:
2016-09-21 01:31:12
阅读次数:
167
概述
衡量一个服务性能的高低好坏,每秒事务处理数(Transactions Per Second,TPS) 是最重要的指标之一,它代表着一秒内服务器平均能响应的请求总数,而TPS值与程序的并发能...
分类:
编程语言 时间:
2016-09-18 12:03:16
阅读次数:
228
Java内存的可见性 可见性: 一个线程对共享变量的修改,能够及时被其它线程看到 共享变量: 如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 Java内存模型(JMM): 描述了Java程序中各种线程共享变量的访问规则,以及在JVM中将线程共享变量存储到内存和从内 ...
分类:
编程语言 时间:
2016-09-17 23:24:38
阅读次数:
220
内存模型的目标是定义程序中各个变量的访问 规则,即在虚拟机中将变量(包括实例字段,静态字段和构成数组对象的元素,不包括局部变量与方法参数,因为后者是线程私有的)存储到内存和从内存中取出变量这样的底层细节。 Java内存模型规定所有的变量都存储在住内存,每条线程还有自己的工作内存,工作内存保存了被该线 ...
分类:
编程语言 时间:
2016-09-14 23:14:51
阅读次数:
211