同步期间Java侦听器是等待还是丢弃?

时间:2013-02-08 04:34:45

标签: java events synchronized

在事件监听器中我有:

public void keyPressed(KeyEvent e) { //the same logic for mouse events, etc.
   synchronized(lockFoo) {...}
}

代码中的其他地方,在另一个线程上:

public void bar() {
   synchronized(lockFoo) {...}
}

如果两个或更多事件在lockFoo被锁定时触发,它们会提示FIFO并等待轮到他们还是会被丢弃? FIFO Cuing是更理想的行为。

3 个答案:

答案 0 :(得分:2)

如果你想使用FIFO - 然后使用ReentrantLock将公平构造函数参数设置为“true”。通过通用同步,根本不可能。

答案 1 :(得分:0)

他们将等待轮到他们并最终以不可预测的顺序执行(没有严格的FIFO)。

答案 2 :(得分:0)

线程将确定排队,但顺序取决于Thread Priority,否则为Random。没有担保FIFO。