1.使用synchronized关键字锁住的是该函数,而不能阻止其他线程使用另外的函数方法
2.在主函数中使用m2()方法,需用用tt调用m2(),而无法使用tr调用m2(),因为m2()是定义在TT里面的函数
代码:
public class TT implements Runnable {
int b = 100;
public synchronized void m1() throws Exception {
b = 1000;
Thread.sleep(5000);
System.out.println("b = " + b);
}
public void m2() {
System.out.println(b);
}
public void run() {
try {
m1();
} catch(Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
TT tt = new TT();
Thread tr = new Thread(tt);
tr.start();
tr.sleep(1000);
tt.m2();
}
}