随笔分类 - 并发编程
摘要:4、JMM - 内存模型 1、JMM内存模型 JMM与happen-before 1、可见性问题产生原因 下图为x86架构下CPU缓存的布局,即在一个CPU 4核下,L1、L2、L3三级缓存与主内存的布局。 每个核上面有L1、L2缓存,L3缓存为所有核共用。 因为存在CPU缓存一致性协议,例如MES
阅读全文
摘要:Java并发 - (并发基础) 1、什么是共享资源 堆是被所有线程共享的一块内存区域。在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例 Java中几乎所有的对象实例都在这里分配内存。方法区与堆一样,也是各个线程共享的一块内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器
阅读全文
摘要:多线程-共享模型之管程 本文章是根据黑马JUC课程编写,记录的笔记 1 共享带来的问题 在平常开发中,很多时候都会遇到共享数据的问题,比如售票,库存。那么如何就会引出一个疑问,如何保证数据的安全性呢(就是数据共享的问题)! 下面一个小案例说明。 创建两个线程,对一个静态变量进行自增或者自减的操作,模
阅读全文
摘要:线程的常用方法 | 方法名 | static | 功能描述 | 注意 | | | | | | | start() | | 启动一个新线 程,在新的线程 运行 run 方法 中的代码 | start 方法只是让线程进入就绪,里面代码不一定立刻 运行(CPU 的时间片还没分给它)。每个线程对象的 sta
阅读全文
摘要:并发编程(概念简述) 1 进程与线程 1.1 概念 1.1.1 线程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的 当一个程序被运行,从磁盘加载这个程序的代
阅读全文