我試圖解決一個Java同步問題。案例如下:古典Java同步問題(小心試試吧?)
有類人,他們想要配對。所以我有一個班級耦合,做配對。當一個人走進Coupling時,沒有人在等她,她開始等待。並等到有人出現,或者她感到無聊並離開(predifines計時器熄滅)。
如果她走了進來,發現有人在等她,他們會立即加上和他們交換電話號碼和各走各路。 (繼續與其他的信息執行。)
同一個人不能兩個人離開。
我保證,這不是一所大學的運動,我試圖作弊。:)我只是在一段時間沒有帶這樣做的東西,我在它有點生疏了。
這是我想出了起來,在第一,所以線程試圖設置的人,如果這也不行,它會得到錯誤的返回值。然後線程得到服務員。出於顯而易見的原因,這將不起作用(另一個線程可能會在這些調用之間),我將如何發出等待線程繼續。
這是我提到的代碼:
public class Coupling {
private static volatile Person waitingPerson = null;
public static synchronized Integer getWaitingPerson() {
Integer temp = waitingPerson;
waitingPerson = null;
return temp;
}
public static synchronized Boolean setWaitingPerson(Integer waitingPerson) {
if (waitingPerson == null){
syncro.waitingPerson = waitingPerson;
return new Boolean(true);
}
else
return new Boolean(false);
}
,在那裏做線程開始發揮作用?你有多少個線程,他們代表什麼等等? – 2011-04-01 16:37:14
你爲什麼要同時使用'volatile'和'synchronized'? – Liv 2011-04-27 13:06:45