package demo;
public class SynchronizedDifferentMethod07 implements Runnable {
static SynchronizedDifferentMethod07 instance = new SynchronizedDifferentMethod07();
public static void main(String[] args) {
Thread thread1 = new Thread(instance);
Thread thread2 = new Thread(instance);
thread1.start();
thread2.start();
}
@Override
public void run() {
if (Thread.currentThread().getName().equals("Thread-0")){
method1();
}else {
method2();
}
}
private synchronized void method2() {
System.out.println("我是加锁的方法2,我叫"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"运行结束");
}
private synchronized void method1() {
System.out.println("我是加锁的方法1,我叫"+Thread.currentThread().getName());
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"运行结束");
}
}
我的疑问是:当thread-0线程进入method1,为什么会导致thread-1不能进入method2,难打在method1和method2上加的锁是同一把锁吗?