38 java swing multithreading awt event-dispatch-thread
怎么SwingUtilities.invokeLater办?它只是推迟在其run方法中执行一段代码吗?在invokeLater函数中调用一个动作或者在我们想要执行的线程的末尾调用它有什么区别?任何人都可以帮我完成这项invokeLater功能的真正功能吗?
Mau*_*lin 27
正如其他答案所说,它Runnable在AWT事件派发线程上执行.但是你为什么要那样做呢?由于Swing数据结构不是线程安全的,因此为程序员提供了一种易于实现的方法来阻止对它们的并发访问,Swing设计者规定了访问它们的所有代码必须在同一个线程上运行的规则.这会自动发生在事件处理和显示维护代码中,但是如果你已经启动了一个长时间运行的操作 - 当然是在一个新线程上 - 你怎么能指示它的进度或完成?您必须修改Swing控件,并且必须从事件派发线程执行此操作.因此invokeLater.
| 归档时间: |
|
| 查看次数: |
51163 次 |
| 最近记录: |