图形用户界面应用程序
简单了解一下就好,不用太在意。
为什么GUI是单线程的
无论是Swing还是AWT都是单线程的。但它不仅限于在java中,在Qt,NexiStep,macOs CoCoa X windows以及其它环境中的GUI框架都是单线程的,许多人都曾经尝试编写多线程的GUI框架,但最终都由于竞态条件和死锁导致的稳定性问题而又重新回到单线程的事件队列模型:采用一个专门的线程从队列中抽取事件,并将它们转发到应用程序定义的事件处理器。
这些问题主要发生在由于锁顺序问题而引发的死锁:
比如:修改程序背景色:
顺序是 应用程序发出修改背景请求————组件类————操作系统进行绘制。
然后 操作系统绘制组件类————组件类————刷新应用程序界面。
另一个方面又要确保每个对象都是线程安全的,从而导致锁顺序的不一致而引发死锁。
关于界面应用程序就写这么多吧,因为觉得这个实用不是实用性很大,知道上面这个知识就能在开发GUI框架的时候少走很多弯路了。
短时间的GUI任务
气泡上升和气泡下降