【发布时间】:2011-04-04 21:15:41
【问题描述】:
例如,Java Swing 和 Android UI 都使用单线程模型,其中单个 UI 线程负责更新所有 UI。是什么让框架设计者选择了一种线程模型而不是另一种?
多线程 UI 模型是否会潜在地为您提供更高的性能,但代价是更复杂?我意识到后者很重要,因为线程相关的错误是讨厌,但我想知道单线程模型除了简单之外是否还有其他优点?
【问题讨论】:
-
您是否已经研究过 GUI 框架的内部结构? Swing 并不简单,尽管它是单线程的。由于应用程序开发人员也可以做到这一点,因此增加一些复杂性会带来微不足道的好处。
-
我认为性能是一个重要的历史原因。锁定有开销。 Java 最初的 AWT 实际上是 MT 安全的(以及许多 Java 1.0 的东西),而且这是有代价的。同样在大多数 UI 中,使用单线程绘制屏幕通常是最佳实践(当然有例外)
-
@seand。绘制到屏幕是通过数千个并行线程完成的。所有现代 GUI 现在都构建场景图并让 GPU 使用其几乎无穷无尽的着色器单元对其进行渲染(是对 10 年答案的评论,但它仍然是这个问题的谷歌首页结果,所以我评论)。
标签: android multithreading swing user-interface