随笔分类 - 并发编程
摘要:一、其他锁的概念(这个其他相对于第4节而言) 1. 锁的粗化 public class LockAppend { Object object1 = new Object(); public void method() { synchronized (object1) { System.out.pri
阅读全文
摘要:一.设计同步器的意义 多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。 共享:资源可以由多个线程同时访问 可变:资源可以在其生命周期内被修改 引出的问题: 由于线程执行的过程是不可控的,所以需要采用同步机制来协同
阅读全文
摘要:之前说了volatile加在全局变量上, 可以保证变量的可见性. 那么volatile到底是怎么保证变量的可见性的呢? 首先, 我们来说一下, java代码是怎么执行的. 一、java代码从jvm虚拟机到底层cpu等硬件是如何交互运行的? 先来看看程序代码在jvm虚拟机层面是如何工作的 packag
阅读全文
摘要:一. 指令重排 令重排序:java语言规范规定JVM线程内部维持顺序化语义。即只要程序的最终结果 与它顺序化情况的结果相等,那么指令的执行顺序可以与代码顺序不一致,此过程叫指令的 重排序。 指令重排序的意义是什么? JVM能根据处理器特性(CPU多级缓存系统、多核处 理器等)适当的对机器指令进行重排
阅读全文
摘要:一. 什么是JMM模型? JMM描述的是一组规范, 它类似于cpu和内存的架构. 这套模型是为了适配不同的操作系统, 不同的硬件结构, 屏蔽掉底层的微小的差异. jvm为什么可以跨平台呢? 有一方面就是JMM内存模型的设计. 尤其是多线程, 再调底层操作系统的时候, 为了屏蔽底层细节的差异, jav
阅读全文
摘要:一. 计算机的五大组成部分 1. 控制器(Control): 是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址,协调计算机各部分工作及内存与外设 的访问等。 2. 运算器(Datapath): 运算器的功能是对数据进行各种算术运算和逻辑运算,即对
阅读全文