与此线程相关的是一个事件的FIFO(First In First Out,先进先出)队列:系统事件队列(java.awt.EventQueue的一个实例)。跟所有的FIFO队列一样,系统事件队列也是被线性填充的。无论是更新组件属性,布局,或是重新绘制,每一个请求依次运行事件处理代码。所有事件被依次处理是为了避免像某个组件的状态在它重新绘制的中途被意外改变这样的情况。知道这一点后,我们就要避免在事件发送线程之外去发送事件。比如说,在另一个线程中直接调用fireXX()方法就是不安全的。我们同时也必须保证事件处理代码和绘制代码尽快地执行完,否则整个系统队列就会被阻塞,被迫等待某个事件被处理,重新绘制,或是布局完毕,而我们的应用程序则像是被“冻结”或是失去响应。 ============================================================================================== // Thanks to Matthew Robinson and Pavel Vorobiev, Ph.D for their great book Swing, this article is translated form // this book, 1st edition. You can find these text in their book (in English) of Chapter 2. =================================================================================
与此线程相关的是一个事件的FIFO(First In First Out,先进先出)队列:系统事件队列(java.awt.EventQueue的一个实例)。跟所有的FIFO队列一样,系统事件队列也是被线性填充的。无论是更新组件属性,布局,或是重新绘制,每一个请求依次运行事件处理代码。所有事件被依次处理是为了避免像某个组件的状态在它重新绘制的中途被意外改变这样的情况。知道这一点后,我们就要避免在事件发送线程之外去发送事件。比如说,在另一个线程中直接调用fireXX()方法就是不安全的。我们同时也必须保证事件处理代码和绘制代码尽快地执行完,否则整个系统队列就会被阻塞,被迫等待某个事件被处理,重新绘制,或是布局完毕,而我们的应用程序则像是被“冻结”或是失去响应。 ============================================================================================== // Thanks to Matthew Robinson and Pavel Vorobiev, Ph.D for their great book Swing, this article is translated form // this book, 1st edition. You can find these text in their book (in English) of Chapter 2. =================================================================================