我瞭解線程是如何工作的一個問題:線程是如何工作的
class ThreadTest implements Runnable{
synchronized void methodA(long n){
for (int i=1;i<3;i++){System.out.print(n+" "+i)}
}
public void run(){
methodA(Thread.currentThread.getId());
}
public static void main(String ... args){
new Thread(new ThreadTest()).start();
new Thread(new ThreadTest()).start();
}
}
正如我現在明白了,因爲methodA
是一個for循環在這個方法進行同步,就必須下一個線程之前完成調用此方法 - 這樣結果必須如4-1 4-2 5-1 5-2...
是否有可能得到類似4-1 5-1 5-2 4-2
的結果?如果是,如何?
「每個方法都鎖定自己的實例」 - \ * facepalm \ *我怎麼忽略這個? –
@JanDvorak它發生在我身上的其他場合:)這不是很難錯過它。 –