当前位置: 首页 > news >正文

synchronized 学习序章

学习源:
https://www.bilibili.com/video/BV1aJ411V763?spm_id_from=333.788.videopod.episodes&vd_source=32e1c41a9370911ab06d12fbc36c4ebc

1.应用场景 不超卖,也要考虑性能问题(场景)

2.常见面试问题: sync出现异常是否释放锁
synchronized 和 Lock的区别
synchronized 和 volatile的区别

3.up举了几个例子

对于可见性:
run是共享变量
线程1是 while(run) 死循环
1秒后,线程2执行。线程2修改run为false后,打印退出。

预期线程2执行完成后,线程1立即结束。但是既然UP说存在可见性问题: 是指当一个线程对共享变量进行了修改,那么另外的线程可以立即看到修改后的最新值。

我猜会过一段时间结束。但是不知道会有多久。疑问是如果一直不做处理,会一直不可见吗?

接着是原子性。 这个概念深入我心。不再抄定义。我对于可见性容易忘,可能是我不够熟悉可见性的定义。对定义模糊导致的。可见性就是说对于共享变量的修改,其他线程可以立即感知。可见的东西是并发编程场景下,那个共享变量的可见性。一定要明确定义,才不会含含糊糊。

例子 i = i+1; 或者i++ 。 加操作与赋值操作,不是一个原子操作。

有序性:
程序执行顺序的优化。编译期、运行期 的优化。

  1. 同步代码块可以重新进入—》 可重入

5.synchronized —>不可中断

6.reentranLock可以中断

7.javap 反汇编 学习synchronized的原理。
monitorenter monitorexit

8.JVM 源码 C/C++ 学monitor 获得等待 释放。

9.无锁 偏向锁 轻量级 重量级。。。锁升级

10.对象头 填充 MarkWord 类信息。。

11.使用优化,减少范围。 降低力度。
hashTable 锁所有的数据。
ch 锁一桶

读写分离。。 读不加锁。写加。

相关文章:

  • 第三章支线五 ·组件之城 · 构建与复用的魔法工坊
  • 鹰盾加密虚拟机保护技术的深度解析:从指令级虚拟化到动态对抗系统
  • 【一文理解】下采样与上采样区别
  • 代码随想录算法训练营第60期第六十四天打卡
  • 什么是数据转换?数据转换有哪些方式?
  • C++ 智能指针实现原理
  • 香橙派3B学习笔记9:Linux基础gcc/g++编译__C/C++中动态链接库(.so)的编译与使用
  • Mybatisplus3.5.6,用String处理数据库列为JSONB字段
  • 【CF】Day80——Codeforces Round 872 (Div. 2) C⭐D (思维 + 模拟 | 树 + 思维 + 组合数学 + 分数取模)
  • 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
  • 【valse2025】CV与ML领域重要进展
  • python打卡训练营打卡记录day50
  • 【Java工程师面试全攻略】Day7:分布式系统设计面试精要
  • 蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
  • 聊聊 Pulsar:Producer 源码解析
  • python打卡day50
  • 常见的http状态码
  • 重温经典算法——二分查找
  • Word中如何对文献应用的格式数字连起来,如:【1-3】
  • 【SQL学习笔记3】深入理解窗口函数的用法
  • 重庆专业平台推广公司/路由优化大师
  • 高邮城乡建设局网站/百度安装到桌面
  • 哪个网站做首饰批发好/百度网盘app官网下载
  • 幼儿园主题网络图设计牙齿真漂亮/英文seo外链
  • 网站建设 乐视/seo优化工具有哪些
  • 淘宝客网站做一种还是做好几种/广州seo优化公司