在一個事件監聽器,我有:Java偵聽器在同步期間是否等待或丟棄?
public void keyPressed(KeyEvent e) { //the same logic for mouse events, etc.
synchronized(lockFoo) {...}
}
而其他地方的代碼,在不同的線程:
public void bar() {
synchronized(lockFoo) {...}
}
如果或多個事件觸發而lockFoo被鎖定,他們會FIFO提示並等待輪到他們或將被丟棄? FIFO Cuing是更理想的行爲。
雖然使線程測試用例很少有趣,但爲什麼不自己嘗試,如果你沒有得到預期的結果,請澄清? –
關閉我的頭頂,任何試圖獲取監視器鎖的線程都會等待,直到釋放鎖。當被鎖定時,等待的線程將進入睡眠並停止處理。這可能會導致傳入的事件被丟棄,但這取決於系統。 – MadProgrammer
@ - A - C:這樣做不會區分「幾乎總是」和「總是」。 –