如果我在同一個類上同步兩個方法,他們可以同時在同一個對象上運行?例如:如果我在同一個類上同步兩個方法,它們可以同時運行嗎?
class A {
public synchronized void methodA() {
//method A
}
public synchronized void methodB() {
// method B
}
}
我知道,我不能在兩個不同的線程同一對象上運行methodA()
兩次。同樣的東西在methodB()
。
但是我可以在不同的線程上運行methodB()
而methodA()
仍在運行? (同一對象)
我對這個問題有一個補充。假設兩個方法都是靜態的,現在使用Class來調用methodA,而使用對象調用methodB,如t1中的A.methodA()和t2中的obj.methodB()。現在會發生什麼,他們會阻止? – amod 2013-03-21 12:16:45
@ amod0017:'當methodB()'爲'static'時,'obj.methodB()'與'A.methodB()'是同義的。因此是的,他們會阻止(在課堂上,而不是對象的顯示器上)。 – NPE 2013-03-21 12:21:07
將盡力回覆它。 :) – amod 2013-03-21 14:34:01