- 博客(5)
- 收藏
- 关注
原创 Synchronized关键字详解
我们上文就看到Mark Word是由32位字节组成,当一个线程请求对象锁的时候,偏向锁就会得到这个线程的id,然后下次看如果还是这个线程就无需做任何同步操作,失败后就会申请轻量级锁。当另一个线程请求这个对象锁的时候,对比锁记录,已经被其他线程拿到了轻量级锁,这时候就会不断重试去获取这个锁,直到前一个线程释放了轻量级锁,然后我才能获取,这就是自旋锁。**2.**每个对象都关联一个自己的Monitor,当第一个线程进入锁之后,他就会指向Owner,这时候这个Monitor就监视着这个线程(Thread-2)
2024-03-21 21:52:05
978
1
原创 乐观锁和悲观锁
共享资源被访问的时候就锁柱了,其他线程不能对该共享资源操作像synchronized和ReentrantLock就是独占锁的悲观思想的实现高并发场景下就会产生激烈的锁竞争,影响性能。举个例子乐观锁就是共享资源被访问的时候不会被锁住,多少线程都可以,只有修改的时候回去查询该资源是否已经被修改实现方式有两种CAS和版本号。
2024-03-20 19:47:43
1004
1
原创 JMM(Java内存模型)与volatile详解
这样我觉得你才能充分理解volatile的作用和好处话不多说我们开始再讲JMM之前我觉得你得先了解计算机的CPU缓存,什么是CPU缓存?定义:CPU缓存是为了解决CPU处理速度和内存处理速度不对等的问题很抽象是吧,先上个图还是很抽象?我们先想想内存是有什么用,我们处理数据直接去硬盘读取数据是不是很慢,这时候我们就需要把数据读入内存,然后计算机处理是不是就更快了,所以说内存看作外存的高速缓存,而CPU缓存同理,我们CPU处理内存的数据,也需要读取到CPU缓存中以加快处理速度,CPU缓存可以看作内存的高速缓存,
2024-03-18 11:29:01
775
原创 Java反射机制详解
Java核心技术卷一中这么写到:反射库(reflection library)提供了一个丰富且精巧的工具集,可以用来编写动态操纵Java代码的程序。使用反射,Java可以支持用户界面生成器,对象关系映射器以及很多其他需要动态查询能力的开发工具。????????????????不懂”反“不懂,那我们从“正”开始一般情况下我们怎么用类的,首先实例化一个类对象,在对这个类对象进行操作//直接初始化,「正射」我们使用一个对象,再利用他的各个成分叫“正”
2024-03-14 21:25:51
744
原创 为什么MySQL的索引要用B+树?
索引快速查询数据的数据结构,本质可以看作是一种排序好的数据结构,相当于书目录无论是InnoDB还是MyISAM都使用了B+树作为索引结构。
2024-03-11 21:30:46
351
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人