摘要: 高效并发是从JDK 1.5到JDK 1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Elimination)、锁粗化(Lock Coarsening)、轻量级锁(Lightwei 阅读全文
posted @ 2016-11-10 20:18 wade&luffy 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 线程安全 我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的。 共享的数据 可以将Java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全、相对线程 阅读全文
posted @ 2016-11-10 19:46 wade&luffy 阅读(1530) 评论(0) 推荐(0) 编辑
摘要: 并发不一定要依赖多线程(如PHP中很常见的多进程并发),但是在Java里面谈论并发,大多数都与线程脱不开关系。 线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度(线程是CPU调度的基本单位)。 阅读全文
posted @ 2016-11-10 16:21 wade&luffy 阅读(6221) 评论(1) 推荐(2) 编辑
摘要: “让计算机并发执行若干个运算任务”与“更充分地利用计算机处理器的效能”之间的因果关系,看起来顺理成章,实际上它们之间的关系并没有想象中的那么简单,其中一个重要的复杂性来源是绝大多数的运算任务都不可能只靠处理器“计算”就能完成,处理器至少要与内存交互,如读取运算数据、存储运算结果等,这个I/O操作是很 阅读全文
posted @ 2016-11-10 15:53 wade&luffy 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码”(Hot Spot Code)。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码 阅读全文
posted @ 2016-11-10 14:21 wade&luffy 阅读(1237) 评论(1) 推荐(1) 编辑
摘要: 从Sun Javac的代码来看,编译过程大致可以分为3个过程: Javac编译动作的入口是com.sun.tools.javac.main.JavaCompiler类,上述3个过程的代码逻辑集中在这个类的compile()和compile2()方法中,整个编译最关键的处理就由图中标注的8个方法来完成 阅读全文
posted @ 2016-11-10 12:41 wade&luffy 阅读(2250) 评论(1) 推荐(0) 编辑