计算机基础知识复习8.22

锁升级机制

无锁->偏向锁->轻量级锁->重量级锁

线程A进入synchronized开始抢锁,JVM会判断当前是否是偏向锁的状态,如果是就会根据Mark Word中存储的线程ID来判断,当前线程A是否就是持有偏向锁的线程,如果是,则忽略check,线程A直接执行临界区内的代码。如果Mark Word里的线程不是线程A,就会通过自旋尝试获取锁,如果获取到了,就将Mark Word中的线程ID改为自己,如果竞争失败了,就会立马撤销偏向锁,膨胀为轻量级锁。后续的竞争线程都会通过自旋来尝试获取锁,如果自旋成功那么锁的状态仍然是轻量级锁,然而竞争失败,锁会膨胀为重量级锁,后续等待的竞争的线程都会被阻塞

如何解决热key问题

在Redis集群架构中对热key进行复制,在Redis集群架构中,由于热key的迁移粒度问题,无法将请求分散至其他数据分片,导致单个数据分片的压力无法下降。此时,可以讲对应热key进行复制并迁移至其他数据分片,例如将热key apple复制到3个内容完全一样的key并名为apple1,apple2,apple3,将这三个key迁移到其他数据分片来解决单个数据分片的热key压力

什么是幻读

当同一个查询在不同的时间产生不同的结果集时,事务中就会出现所谓的幻想问题,例如select执行两次,但是第二次返回了第一次没有返回的行,则出现了幻读

接口和抽象类

实现接口的关键字是implements 继承抽象类的关键字extends, 一个类可以实现多个接口,一个类只能继承一个抽象类

接口中只有定义,不能有方法实现,而抽象类可以有定义与实现,方法可在抽象类中实现

接口成员变量默认为public static final必须赋初值,不能被修改,所有的成员方法都是public

抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值,抽象方法被abstract修饰,不能被private,static,synchronized修饰。

操作系统实现进程协作采用的方法

锁机制:任何想要进入临界区的线程,必须先执行加锁操作,若加锁操作顺利通过,则线程可进入临界区,在完成对临界区的访问后再执行解锁操作,以释放该临界资源

PV信号量:信号量表示资源的数量,通过P操作,使得信号量减一,当信号量<0 则线程进入阻塞等待状态。通过V操作使得信号量加1,当信号量<=0,唤醒一个等待中的线程。

参考资料:
小林coding

相关推荐
青灯文案1几秒前
SpringBoot 项目统一 API 响应结果封装示例
java·spring boot·后端
code bean7 分钟前
【C#基础】函数传参大总结
服务器·开发语言·c#
我就是程序猿10 分钟前
tomcat的配置
java·tomcat
阳光阿盖尔17 分钟前
EasyExcel的基本使用——Java导入Excel数据
java·开发语言·excel
二十雨辰18 分钟前
[苍穹外卖]-12Apache POI入门与实战
java·spring boot·mybatis
程序员皮皮林18 分钟前
开源PDF工具 Apache PDFBox 认识及使用(知识点+案例)
java·pdf·开源·apache
蔚一19 分钟前
Java设计模式—面向对象设计原则(三) -----> 依赖倒转原则DIP(完整详解,附有代码+案例)
java·开发语言·设计模式·intellij-idea·依赖倒置原则
liang899924 分钟前
SpringSecurity原理解析(七):权限校验流程
java·开发语言
LQS202025 分钟前
基于Python实现一个浪漫烟花秀
开发语言·python
Rookie也要加油25 分钟前
WebRtc一对一视频通话_New_peer信令处理
笔记·学习·音视频·webrtc