自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 通俗易懂 悲观锁、乐观锁、可重入锁、自旋锁、偏向锁、轻量/重量级锁、读写锁、各种锁及其Java实现!

其实在升级为轻量级锁之前,虚拟机会让线程A尽快在安全点挂起,然后在它的栈中“伪造”一些信息,让线程A在被唤醒之后,认为自己一直持有的是轻量级锁。但问题的关键是,我们说一个锁是悲观锁还是乐观锁,总是应该站在应用层,看它们是如何锁住应用数据的,而不是站在底层看抢占锁的过程。像乐观锁适用于写比较少的情况下,即冲突真的很少发生的时候,这样可以省去锁的开销,加大了系统的整个吞吐量。如果多个线程用一个锁,但是没有发生锁竞争,或者发生了很轻微的锁竞争,那么synchronized就用轻量级锁,允许短时间的忙等现象。

2024-09-29 20:42:53 366

原创 Java集合

Java集合说List Set Map 之间的区别:有序,可重复,存储单个对象。:无序(或特定实现有序),不可重复,存储单个对象。:无序,遍历顺序不确定。:有序,遍历顺序与插入顺序一致。:有序,遍历顺序按元素的自然顺序或指定的排序规则排列。因此,如果你需要一个无序集合,HashSet是常用的选择;如果你需要维持插入顺序或排序顺序,可以选择或TreeSet。:键值对存储,键无序(或特定实现有序),键不可重复,值可重复。这些集合在java中都有那些对应实现类 以及底层数据结构ArrayList。

2024-09-29 20:31:38 439

原创 java并发

线程在执行过程中会有自己的运行条件和状态(也称上下文),比如上文所说到过的程序计数器,栈信息等。当出现如下情况的时候,线程会从占用 CPU 状态中退出。主动让出 CPU,比如调用了sleep()wait()等。时间片用完,因为操作系统要防止一个线程或者进程长时间占用 CPU 导致其他线程或者进程饿死。调用了阻塞类型的系统中断,比如请求 IO,线程被阻塞。被终止或结束运行这其中前三种都会发生线程切换,线程切换意味着需要保存当前线程的上下文,留待线程下次占用 CPU 的时候恢复现场。

2024-09-29 20:16:18 264

原创 MySQL 锁

MySQL 中锁定粒度最大的一种锁(全局锁除外),是针对非索引字段加的锁,对当前操作的整张表加锁,实现简单,资源消耗也比较少,加锁快,不会出现死锁。快照读的情况下,如果读取的记录正在执行 UPDATE/DELETE 操作,读取操作不会因此去等待记录上 X 锁的释放,而是会去读取行的一个快照。意向锁和共享锁和排它锁互斥(这里指的是表级别的共享锁和排他锁,意向锁不会与行级的共享锁和排他锁互斥)。:事务有意向对表中的某些记录加共享锁(S 锁),加共享锁前必须先取得该表的 IS 锁。

2024-09-29 16:33:16 818

原创 JVM的常见面试题

选择哪种方式取决于 JVM 的实现和应用的具体需求。现代 JVM 通常使用直接指针方式,因为它提供了更好的性能,尤其是在对象访问频繁的情况下。然而,句柄访问在某些特定的垃圾回收场景下仍然有其优势,尤其是在需要频繁移动对象的情况下。引用类型总结JDK1.2 之前,Java 中引用的定义很传统:如果 reference 类型的数据存储的数值代表的是另一块内存的起始地址,就称这块内存代表一个引用。

2024-09-29 16:32:30 421

java短链接项目面试题详解

java短链接项目面试题详解

2024-09-29

java集合面试题 全概括

java集合面试题 全概括

2024-09-29

java锁相关详解 看完就懂

java锁相关详解 看完就懂

2024-09-29

java面试准备文档 完整面试前准备

java面试准备文档 完整面试前准备

2024-09-29

java rpc项目教程

java rpc项目教程

2024-09-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除