在一个事件监听器,我有: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:这样做不会区分“几乎总是”和“总是”。 –