死锁用例
public class DeadLock {
private static String A="A";
private static String B="B";
public static void main(String[] args) {
Thread threadA=new Thread(new Runnable() {
@Override
public void run() {
synchronized(A){
System.out.println(A);
try {
Thread.currentThread().sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized(B) {
System.out.println(B);
}
}
}
});
Thread threadB=new Thread(new Runnable() {
public void run() {
synchronized(B) {
synchronized(A) {
System.out.println("AA");
}
}
}
});
threadA.start();
threadB.start();
}
}
该博客展示了Java中死锁的概念,通过一个简单的线程同步代码示例,说明了两个线程分别持有不同对象锁并尝试获取对方持有的锁时导致的死锁情况。代码中线程A先锁定对象A再尝试锁定对象B,而线程B则相反,导致双方都在等待对方释放资源,从而形成死锁状态。
817

被折叠的 条评论
为什么被折叠?



