深入理解jvm虚拟机

风景

每个Java开发者都知道Java字节码是执行在JRE((Java Runtime Environment Java运行时环境)上的。JRE中最重要的部分是Java虚拟机(JVM),JVM负责分析和执行Java字节码。Java开发人员并不需要去关心JVM是如何运行的。在没有深入理解JVM的情况下,许多开发者已经开发出了非常多的优秀的应用以及Java类库。不过,如果你了解JVM的话,你会更加了解Jav […]

深入理解java内存模型

java线程之间的通信对程序员完全透明,内存可见性问题很容易困扰java程序员,本文试图揭开java内存模型神秘的面纱。 本文大致分三部分: 重排序与顺序一致性; 三个同步原语(lock,volatile,final)的内存语义,重排序规则及在处理器中的实现; java内存模型的设计目标,及其与处理器内存模型和顺序一致性内存模型的关系。  深入理解java内存模型(一)——基础 深入理解 […]

线程池BlockingQueue排队策略

排队有三种通用策略 1、直接提交。无缓冲等待队列SynchronousQueue,它将任务直接提交给线程而不保持它们。在此,如果不存在可用于立即运行任务的线程,则试图把任务加入队列将失败,因此会构造一个新的线程。此策略可以避免在处理可能具有内部依赖性的请求集合时出现锁定。直接提交通常要求无界 maximumPoolSizes 以避免拒绝新提交的任务。当命令以超过队列所能处理的平均数连续到达时,此策 […]