1
我是新同步主題,在嘗試訪問同步對象時找不到有關使用wait()
,notify()
和notifyAll()
方法的任何地方的明確信息。對於〔實施例,如果我們有這樣的代碼:同步多個線程之間的數據
class X extends Thread {
int x;
public void methodX()
{
synchronized(this)
{
//some operations on x
}
}
}
class Y extends Thread {
public void methodY(X x)
{
int z = x.x;
}
}
我們應該倡導:在methodY()
和notify()
wait()
在methodX()
結束了嗎? 否則,我們不會爲z
分配任何值,否則線程將等待,直到X解鎖爲止,而不顯式調用wait()
?
你想做什麼?包括主要() – 2013-05-08 12:24:20
不,你不應該。由於X.x被多個線程訪問,所以每個訪問都應該簡單地在同一個對象上同步。閱讀Brian Goetz的[Java併發教程](http://docs.oracle.com/javase/tutorial/essential/concurrency/)和Java Concurrency in Practice。還請閱讀wait()和notify()的javadoc以瞭解它們的用途和用途。 – 2013-05-08 12:25:49
請澄清一下......你的要求是'method'的賦值在'methodX'執行之後纔會出現? – 2013-05-08 12:27:15