2
你好我試圖使用semaphore.aqcuire()
和semaphore.release()
同步類。我從名爲ReadSerialPort
的類中撥打semaphore.release()
,從WriteSerialPort
撥打semaphore.aqcuire()
,以將電話中心連接到PC。我的問題是電話中心並不總是響應。Java:使用信號量和定時器
我想知道一種方法來設置計時器,並在時間過去後使semaphore.release()
。
P.S:我嘗試使用TimedSemaphore
類,但什麼都沒有發生
它會是一個選項,把邏輯在收購方?有Semaphore.tryAcquire(超時) – 2013-02-08 15:54:39
你描述的模式並沒有什麼意義。您需要確保以「正常」方式調用'release()',並根據需要在阻止呼叫時使用超時。 (如果沒有代碼和共享資源的概述以及它們發生了什麼,很難說清如何修復你的問題。) – millimoose 2013-02-08 15:54:51
在定時器上釋放信號量可能會使事情以不好的方式破壞,因爲我認爲有一個原因它已被收購。你通常所做的就是試圖用超時獲得它,如果持有信號量的線程不會放棄它,就放棄它。這樣,你就會知道一些事情,並不認爲它是以正常方式發佈的。 – 2013-02-08 15:57:24