面试突击48:如何识别死锁排查工具?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1358个文字,预计阅读时间需要6分钟。
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程)都在等待对方释放资源,而没有人先释放资源,导致所有单元都无法继续执行的状态。
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。
比如线程 1 拥有了锁 A 的情况下试图获取锁 B,而线程 2 又在拥有了锁 B 的情况下试图获取锁 A,这样双方就进入相互阻塞等待的情况,如下图所示:
死锁的代码实现如下:
import java.util.concurrent.TimeUnit;
public class DeadLockTest {
public static void main(String[] args) {
Object lockA = new Object();
Object lockB = new Object();
// 创建线程 1
Thread t1 = new Thread(() -> {
// 1.占有锁 A
synchronized (lockA) {
System.out.println("线程1:获得锁A。
本文共计1358个文字,预计阅读时间需要6分钟。
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程)都在等待对方释放资源,而没有人先释放资源,导致所有单元都无法继续执行的状态。
死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方释放资源,但没有一方提起释放资源,从而造成了一种阻塞的现象就称为死锁。
比如线程 1 拥有了锁 A 的情况下试图获取锁 B,而线程 2 又在拥有了锁 B 的情况下试图获取锁 A,这样双方就进入相互阻塞等待的情况,如下图所示:
死锁的代码实现如下:
import java.util.concurrent.TimeUnit;
public class DeadLockTest {
public static void main(String[] args) {
Object lockA = new Object();
Object lockB = new Object();
// 创建线程 1
Thread t1 = new Thread(() -> {
// 1.占有锁 A
synchronized (lockA) {
System.out.println("线程1:获得锁A。

