07 2020 档案
摘要:同步锁本质 同步的方式:独享锁 - 单个队列窗口,共享锁 - 多个队列窗口 抢锁的方式:插队抢(不公平锁)、先来后到的抢锁(公平锁) 没抢到锁的方式:快速尝试多次(CAS自选锁)、阻塞等待 唤醒阻塞线程的方式(叫号器):全部通知、通知下一个 //自己实现(独享锁) public class Devo
阅读全文
摘要:JITWatch顾名思义是HotSpot JIT编译器的日志分析器和可视化工具 github地址:https://github.com/AdoptOpenJDK/jitwatch 下载工具 在目录下,打开控制台 启动代码:mvn clean compile exec:java 打开后配置源码路径和c
阅读全文
摘要:线程锁 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直到成功。 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从数据就开始上锁。 乐观锁:假定没有冲突,在修改数据时如果数据发现和之前获取的不一致,则读最新数据,修改后重新修改。 独享锁(写):给资源加上写锁,线程
阅读全文
摘要:原子性指的是一个的操作或者多次操作,要么所有的操作全部都得到执行并且不会收到任何因素的干扰而中断,要么所有的操作都执行,要么都不执行。 synchronized 可以保证代码片段的原子性。 synchronized相比于volatile在保证可见性的同时,也保证了原子性 问题描述 2个线程对变量i进
阅读全文
摘要:java编程语言的语义允许编译器和微处理器执行优化 实例的代码 public class VisibilityDemo2 { // 状态标识 (不用缓存) private boolean flag = true; public static void main(String[] args) thro
阅读全文
摘要:前言 线程中会出现的很多问题: 所见非所得 无法肉眼去检测程序的准确性 不同平台会有不同的表现 错误很难重现 正因为这些问题,学习多线程会有比较打的困难。 内存模型来解决不同线程之间对同一个变量的读写同步问题 目录 线程状态 线程终止(stop、interrupt、标志位) 线程协调(wait/no
阅读全文

浙公网安备 33010602011771号