【发布时间】:2014-12-15 10:48:21
【问题描述】:
我在比较 Swing 的 SwingWorker 和 Android 的 AsyncTask 类之间的差异。虽然 Android 有一个主线程/UI 线程,然后产生一个后台线程(使用 AsyncTask),但 SwingWorker 涉及三个线程 -
- 当前线程
- 工作线程
- 事件调度线程。
然后我也看到了声明(在文档中)-
通常,当前线程是事件调度线程。
现在,这是什么意思?
这是否意味着 Swing 也只有 1 个线程 - 主线程和 甚至事件都在同一个线程上接收 OR 不同的JVM实现有区别吗?
【问题讨论】:
-
Swing 不是 java。 Android 为每个应用程序启动一个新的(linux)单线程进程。该线程主要负责触摸事件和绘图。 Java Swing 也应该如此。两者都被认为是单线程 awt 模型
-
是的,Android 是一个单线程应用程序,这意味着所有的 UI 操作都在 UI 线程上完成。任何其他可能需要很长时间才能响应的任务都是单独创建的。
-
并且 AsynchTask 在 Android 运行时创建的 Executor 上运行。这意味着它可以运行或排队,而无需您强制它们进入工作程序或执行程序。
标签: java android swing android-asynctask swingworker