0
public class B extends Thread {
@Override
public void run() {
print();
}
public synchronized void print(){
int i;
for (i=0;i<1000;i++){
System.out.println(Thread.currentThread().getName());
}
}
}
public class A {
public static void main(String[] args) {
B b1=new B();
B b2=new B();
b1.start();
b2.start();
}
}
如何鎖定打印方法訪問類B的兩個對象?我想要的是在這裏我同步的方法沒有使用它!所以我想讓線程1先運行print方法然後再運行線程2。我如何更改代碼?如何阻塞兩個線程對象訪問方法1,來自同一類
B.class是什麼意思?這是否意味着我們必須將其鎖定在課堂級別? @ andrey-cheboksarov – eagle
@eagle是的,就是這樣。你鎖定類對象。用同步化的非靜態方法鎖定實例。在你的情況下,實例可能意味着b1或b2,但它們是獨立的。另一種選擇是有同步靜態方法,它會起作用 –
謝謝!我得到了很好的解釋! @安德烈 - cheboksarov – eagle