got*_*ch4 7 java swing multithreading
我多次听说Java Swing线程模型是错误的.我不完全理解为什么,我知道问题与你可以Drawable从主UI线程以外的另一个线程上绘制的事实有关.我知道有一些实用功能SwingUtilities.invokeAndWait,SwingUtilities.invokeLater可以让你在a中进行绘制Runnable,然后由Event Dispatcher线程运行.我猜这种方式可以确保绘画是同步完成的,这不会使缓冲区处于不连续状态.
我的问题是:"好"的UI工具包如何表现?采用了哪些解决方案?
小智 9
Brian Goetz的Java并发实践,
9.1为什么GUI是单线程的?:
...在过去,GUI应用程序是单线程的,GUI事件是从"主事件循环"处理的.现代GUI框架使用的模型略有不同:它们创建了一个专用的事件调度线程(EDT)来处理GUI事件.单线程GUI框架并不是Java独有的; Qt,NextStep,MacOS Cocoa,X Windows和许多其他产品也是单线程的.这不是因为缺乏尝试; 编写多线程GUI框架的尝试很多,但是由于竞争条件和死锁的持久性问题,它们最终都到达了单线程事件队列模型,其中专用线程从队列中提取事件并将它们分派给应用程序 - 定义的事件处理程序......
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |