2021.10.29
什么是锁 锁的是什么!!?
并发
JUC
首先要了解的就是,JUC的含义就是java中自带的几个包,具体的位置定义如下
而这几个包,自然也就是跟并发过程有关系。
一些基础知识:
进程和线程
Java是开不了线程的,是通过本地方法底层的c++实现,Java无法操作硬件。
并发和并行
多线程相关
wait和sleep的区别
- 来自不同的类,wait由object类提供,sleep由Thread类提供。
- 关于锁的释放,wait会释放锁,sleep不会。
- 使用的范围不同,sleep可以在任何地方使用。wait只能在同步代码块中使用。
- 是否需要捕获异常,wait不需要,sleep必须捕获异常。
传统syn锁
其他的没有什么多说的主要说明一个需要改变的习惯,即在真正的开发过程中要降低所写类的耦合性。
即线程就是一个单独的资源,没有任何的附属操作,其中就包含了必须的属性和方法即可。即像继承接口这种操作都是最好省略的,具体的继承重写的部分由lamda表达式去实现
即大概是上图这种类型。
Lock接口
补充几个概念
公平锁和非公平锁
公平锁即是非常公平,可以先来后到。
非公平锁即是允许插队的锁。
lock基本的操作模式
同步和lock的区别
- 同步为java内部的关键字,lock是一个java类。
- 同步无法判断获取锁的状态,lock可以判断是否获取。
- 同步会自动释放锁,但是lock不会,自然可能会导致死锁。
- 同步适合锁少量的代码同步问题,lock适合锁大量的。
- 还有其他的如下: