我正試圖通過使用多線程的Java解決Java編寫器偏好的讀寫器問題。以下是我的代碼的簡化版本。它會起作用嗎?Java PriorityQueue等待
public PriorityQueue<myClass> pq;
public void foo(){
myClass obj = new myClass();
pq.add(obj);
obj.wait();
//Actual code
}
public void bar(){
pq.remove().notify();
}
假設優先級隊列pq最初是空的,並且封裝類的構造函數調用pq的構造函數。另外,先調用foo,然後調用bar。所以當foo被調用時,它將obj添加到隊列中,併成爲前端元素,以便在刪除的元素bar中調用remove時。我的問題是,是否會執行「實際代碼」?還是我在兩個完全不同的對象上執行wait()和notify()?如果是這樣,我該如何解決?
你可以多說一下你想要發生什麼嗎? 「作家偏好」是什麼意思,特別是在示例代碼的上下文中?據推測'foo()'和'bar()'是從不同的線程中調用的......並且你希望'foo()'排入一個對象,然後阻塞直到bar()出列它。爲什麼? – andersoj 2010-10-15 04:44:08
此外,這是如何涉及*非常*類似的問題在這裏http://stackoverflow.com/questions/3938606/waiting-on-objects-after-putting-them-into-priority-queue-in-java? – andersoj 2010-10-15 05:18:56
這是同樣的問題。我已經等了大約10-12個小時,似乎沒有人迴應,所以我認爲這個問題已經排在了名單之後,讓任何人再次注意到,這就是爲什麼我再次發佈這個問題的原因。 – Anand 2010-10-17 09:28:15