add logseq-java

This commit is contained in:
Lostecho
2024-02-02 00:12:49 +08:00
parent 1cd5bb460f
commit c7947017c3
875 changed files with 57100 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
- 特点
- 互斥
- 当某个线程获得对象锁之后,其它线程不能再次抢占同样对象锁
- 重入
- 当根线程获得对象锁之后,它的其它方法依旧可以抢占同样的对象锁
- Java对锁的支持
- Synchronized关键字
- 同步代码块
- 放置在方法内部
- 可以灵活控制加锁代码的区域
- ```java
synchronized(对象){
//锁定的代码
}
```
- 同步方法
- Lock接口
- 对比
- Lock可以通过tryLock()判断锁的状态synchronized无法判断
- synchronized自动释放锁Lock需要手动unlock(),不释放变为死锁
- synchronized线程间需要不断等待Lock不一定
- synchronized可重入不可中断非公平锁Lock可重入可中断可公平与不公平
- synchronized适合锁定代码量非常少Lock适合锁定代码量非常多
- 锁升级
- synchronized根据线程数量决定锁的力度
- 无锁
- 刚创建,未引用
- 偏向锁
- 1根线程操作该对象
- 轻量级
- 2根线程同时操作该对象
- 重量级
- 2根以上线程同时操作该对象
- 锁只有升级,没有降级
- 面试题 #Java面试
- ```java
synchronized(this){}
// 获得当前对象的锁
```
- ```java
synchronized(user){}
// 获得user对象的锁
```
- ```java
synchronized(Object.class){}
// 获得Object class 类对象的锁
```
- ```java
public synchronized boolean sell(){}
// 获得当前对象的锁
```
- ```java
public synchronized boolean sell(){}
// 获得当前类的Class对象的锁
```