对啊,一个方法中是锁AB ,另一个方法中是锁BA,
-public class DeadLockThread extends Thread {
- boolean flag;//定义标记,用来指定要执行的代码
- public DeadLockThread(boolean flag) {
- this.flag = flag;
- }
- @Override
- public void run() {
- if(flag) {//flag赋值为true时,执行的代码
- synchronized (锁1) {
- System.out.println("if中锁1");
- synchronized (锁2) {
- System.out.println("if中锁2");
- }
- }
- } else {//flag赋值为false时,执行的代码
- synchronized (锁2) {
- System.out.println("else中锁2");
- synchronized (锁1) {
- System.out.println("else中锁1");
- }
- }
- }
- }
-}
if中还是锁住1,else中锁住2.为什么就是if中的锁2执行不进去,else中的锁1执行不进去了? |