1

在事件监听器中,我有:

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

在代码中的其他地方,在不同的线程上:

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

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

4

3 回答 3

2

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

于 2013-02-08T05:05:25.563 回答
0

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

于 2013-02-08T04:36:59.420 回答
0

线程肯定会排队,但顺序取决于Thread Priority,否则是随机的。不保证 FIFO。

于 2013-02-08T04:46:08.153 回答