我多次听说 Java Swing 线程模型是错误的。我不完全明白为什么,我知道问题与你可以绘制Drawable
来自主 UI 线程以外的另一个线程。我知道有一些实用功能,例如SwingUtilities.invokeAndWait
and SwingUtilities.invokeLater
让你可以在一个Runnable
,依次由事件调度程序线程运行。我想这样可以确保绘画是同步完成的,并且不会使缓冲区处于不一致的状态。
我的问题是:“好的”UI 工具包表现如何?采用了哪些解决方案?
布莱恩·戈茨的Java 并发实践 https://rads.stackoverflow.com/amzn/click/com/0321349601,
9.1 为什么 GUI 是单线程的?:
...过去,GUI 应用程序是单线程和 GUI 事件
从“主事件循环”处理。现代 GUI 框架使用
模型略有不同:他们创建了一个专门的事件
用于处理 GUI 事件的调度线程 (EDT)。单线程图形用户界面
框架并不是 Java 独有的; Qt、NextStep、MacOS 可可、X
Windows 和许多其他操作系统也是单线程的。这不是为了
缺乏尝试;已经有很多尝试编写多线程
GUI 框架,但由于种族问题持续存在
条件和僵局,他们最终都到达了
单线程事件队列模型,其中专用线程获取
事件离开队列并将它们分派给应用程序定义的事件
处理程序...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)