【发布时间】:2013-02-16 02:41:39
【问题描述】:
我有几个关于Platform.runLater 的问题。我有一个 JavaFX 应用程序类。在这个类中,我运行一个线程(线程从网络套接字读取数据)。
现在当我在线程内创建一个新的Stage 时,系统会抛出一个执行(JavaFX 事件调度程序线程和我的 netork-read 线程不一样) - 我理解这种行为。
但另一方面是,我将网络阅读器中的文本附加到现有的 TextArea 或添加/删除 ListView<String> 中的一些项目 - 这不会引发异常 - 为什么?我认为 JavaFX 是单线程的(ui 库部分)。这是否与 Swing 中的相同:有时它可以工作,有时你只是垃圾(因为 EDT)?
我的问题:
- JavaFX 事件调度线程什么时候抛出异常,什么时候不抛出?
- 有什么好的文档吗?
- 是否有更简单(更短、更简洁)的方式来使用
Platform.runLater和run()方法?结合try catch(或multiple catch),看起来很奇怪
我知道Platform.runLater 在线程中的使用不是很好(设计解决方案)
【问题讨论】:
-
Or is this the same thing as in Swing: Sometimes it works and sometimes you have just garbage?请问你在说什么,Swing GUI 的所有更新都必须在 EDT 上完成,GUI 单一威胁在大多数情况下是优势,适用于各种编程语言的大量 GUI 框架 -
是的,我的意思是 Swing 中的 EDT(只需在 EDT 上下文中使用 UI)。我的意思是,当您在 EDT 之外访问 Swing UI 时,有时它会起作用,有时则不起作用
-
请在您的问题中包含一个演示
In combination with a try catch (or multiple catch), it looks very strange的代码示例。
标签: java multithreading javafx-2 event-dispatch-thread