其他分享
首页 > 其他分享> > Synchronized和ReetrantLock的进一步认识

Synchronized和ReetrantLock的进一步认识

作者:互联网

文章目录


1.Synchroized

前提:八股看了一遍又一遍,每次看这个Synchroized都有点不同,这次把整体总结一下

所以对于锁来说,其实就是对象监视器来针对当前对象的对象头的标志位的一个抢占(对于类的话,应该是类对象吧,只有一个),主要以对象头标志抢占为主:

注:
三种队列:等待队列(竞争队列+候选队列)、阻塞队列、运行的线程、下次竞争的线程

2. ReetrantLock

顺便把它讲了吧,这是JDK实现的,而上面的是内置的;并且ReentrantLock需要手动释放锁,出现异常可能会产生死锁,而Synchronized会自动释放;两者都是非公平锁+可重入锁,但是前者(lock)可以实现公平锁,并且可中断。

注:可以看到其实和synchroized一样都是刚开始进行cas抢锁,明显不公平。

3. 线程池

继续--------

为什么需要?
1.可以进行重用,来任务的时候快速的启动,避免线程的销毁
2.线程池统一管理、统一分配

参数:
核心线程数量、最大线程数量、存活时间、单位、阻塞队列、拒绝策略、线程工厂

常见的几种线程池:

工作原理:
对于新来的任务

拒绝策略:

阻塞队列:

标签:cas,ReetrantLock,抢锁,Synchronized,认识,队列,对象,线程,公平
来源: https://blog.csdn.net/qq_37534947/article/details/120096836