sycronized 问题,同一个程序两个结果?
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception{
b = 1000;
System.out.println("I am m1");
Thread.sleep(2000);
System.out.println("m1 : b = " + b);
}
public synchronized void m2() throws Exception {
b = 2000;
System.out.println("I am m2");
Thread.sleep(2500);
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread t = new Thread(tt);
t.start();
tt.m2();
System.out.println("main:"+tt.b);
}
}
运行了多次次,出了两个结果。
结果1:
I am m2
I am m1
main:1000
m1 : b = 1000
结果2:
I am m2
main:2000
I am m1
m1 : b = 1000
请问是不是看谁的线程先拿到当前对象的锁啊,新手一个,希望大虾们解释下。
这个sychronized 关键字也不是理解得很透彻?谢谢