public class T implements Runnable {
int a=0;
@Override
public void run()
{
m1();
}
//方法m1
public synchronized void m1()
{
a=1;
try {
Thread.sleep(6000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("m1:a="+a);
}
//方法m2
public void m2()
{
System.out.println("m2:a="+a);
}
//main方法
public static void main(String[] args) throws Exception
{
T r1=new T();
Thread t=new Thread(r1);
t.start();
Thread.sleep(2000);//保证线程t的run()方法执行
r1.m2();
}
问题如下:
当执行完t.start();后 对象r1被锁定,为什么还能调用对象r1的m2()方法?
最终执行结果如下:
m2:a=1
m1:a=1 |