多线程
Java_小七
这个作者很懒,什么都没留下…
展开
-
volatile关键字
总述 volatile是java虚拟机提供的轻量级的同步机制,它保证可见性,不保证原子性,禁止指令重排。基本上遵守了jmm的规范(可见性,原子性,有序性) long和double的读写时原子的吗?如果使用Volatile修饰之后呢? lock 前缀的指令在多核处理器下读写会引发两件事情。一是将当前处理器缓存行的数据写回到系统内存。二是写回内存的操作会使在其他 CPU 里缓存了该内存地址的额数据无效...原创 2020-04-22 18:13:05 · 71 阅读 · 0 评论 -
上下文切换
概念 CPU寄存器,是CPU内置的容量小、但速度极快的内存。程序计数器,则是用来存储CPU正在执行的指令的位置,或者即将执行的下一条指令的位置。他们都是CPU在运行任何任务前,必须依赖的环境,因此也被叫做CPU上下文。 当前任务在执行完 CPU 时间片切换到另一个任务之前会先保存自己的状态,以便下次再切换到这个任务时,可以再加载这个任务的状态。任务从保存到再加载的过程就是一次上下文切换。 线程...原创 2020-04-21 16:43:44 · 134 阅读 · 1 评论 -
偏向锁、轻量级锁、重量级锁
无锁状态: 为了保证获得锁和释放锁的效率,锁可以升级但不能降级。 举例: 开门; 偏向锁:当第一个线程开门,对该门贴个标签(自己专用),下次进出方便。(标签是线程id) 轻量级锁:当另一个线程也要开门时,首先撕掉标签,两个线程竞争,在自己的栈帧中创建一个lockrecord,查看门上贴的是哪一个标签,如果不是自己,采用自旋的方式,如果在贴自己标签时,门上的标签原始值一样,则让门上的标签指向自己的...原创 2020-04-05 19:43:28 · 279 阅读 · 0 评论