读者福利
由于篇幅过长,就不展示所有面试题了,感兴趣的小伙伴
更多笔记分享
-
Java线程死锁是一个经典的多线程问题, 因为不同的线程都在等待根本不可能被释放的锁, 从而导致线程中的任务无法完成
-
下面演示互相等待对方锁释放的死锁
/**
-
Created with IntelliJ IDEA.
-
Description: If you don’t work hard, you will a loser.
-
User: Listen-Y.
-
Date: 2020-10-03
-
Time: 20:37
*/
public class DealThread implements Runnable {
private String userName;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
//俩把锁
private final Object lock1 = new Object();
private final Object lock2 = new Object();
@Override
public void run() {
if (“a”.equals(userName)) {
synchronized (lock1) {
System.out.println(“userName=” + userName + " :" + “进入lock1”);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock2) {
System.out.println(“由lock1->进入->lock2”);
}
}
}
if (“b”.equals(userName)) {
synchronized (lock2) {
System.out.println(“userName=” + userName + " :" + “进入lock2”);
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (lock1) {
System.out.println(“由lock2->进入->lock1”);
}
}
}
}
}
- 启动类
/**
- Created with IntelliJ IDEA.
最后
这份文档从构建一个键值数据库的关键架构入手,不仅带你建立起全局观,还帮你迅速抓住核心主线。除此之外,还会具体讲解数据结构、线程模型、网络框架、持久化、主从同步和切片集群等,帮你搞懂底层原理。相信这对于所有层次的Redis使用者都是一份非常完美的教程了。
整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~
你的支持,我的动力;祝各位前程似锦,offer不断!!!
+最新讲解视频+实战项目源码】](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)收录**