public class TestLock extends Thread{
// 两个简单的锁对象, final 保证引用不更改,static 保证同一个对象锁
final static Object lockA = new Object();
final static Object lockB = new Object();
public static void main(String[] args) {
// 创建两个线程,重写run()方法,分别调用add()和dec()
TestLock t1 = new TestLock(){
@Override
public void run() {
add();
}
};
TestLock t2 = new TestLock(){
@Override
public void run() {
dec();
}
};
t1.start();
t2.start();
}
// emm,先摸会鱼
public void run() {
}
// 先A后B
public void add() {
synchronized(lockA) { // 获得lockA的锁
System.out.println("addAAA");
synchronized(lockB) { // 获得lockB的锁
System.out.println("addBBB");
} // 释放lockB的锁
} // 释放lockA的锁
}
// 先B后A
public void dec() {
synchronized(lockB) { // 获得lockB的锁
System.out.println("decbbb");
synchronized(lockA) { // 获得lockA的锁
System.out.println("decaaa");
} // 释放lockA的锁
} // 释放lockB的锁
}
}
java最简单的死锁
最新推荐文章于 2021-12-20 11:06:38 发布