相关疑难解决方法(0)

JavaFX中的Platform.runLater和Task

我一直在研究这个问题,但至少我还是非常困惑.

谁能给我一个何时使用Task和何时使用的具体例子Platform.runLater(Runnable);?究竟有什么区别?什么时候使用其中任何一个是否有黄金法则?

如果我错了也不纠正我,但这两个"对象"不是在GUI中用于更新GUI的主线程内创建另一个线程的方法吗?

java user-interface multithreading javafx task

76
推荐指数
3
解决办法
13万
查看次数

JavaFx对SwingUtilities.invokeLater的响应

所以我知道JavaFx在使用线程时更新GUI的方法称为Task,但代码的工作方式是否相似或存在差异.让我举个例子:

GUI之外的另一个类作为线程运行

public void run(){
    while (socket.isConnected()) {
        String x = input.next();
        System.out.println(x);
        mg.updateChat(x)
    }
}
Run Code Online (Sandbox Code Playgroud)

在实际的GUI里面

public void updateChat(final String input){
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            txtChat.setText(input); 
        }
    }); 
}
Run Code Online (Sandbox Code Playgroud)

任务的工作方式是否完全相同?或者是否存在差异,是否有如何修改此代码以在JavaFx项目中工作?

java swing javafx mixing event-dispatch-thread

10
推荐指数
1
解决办法
8915
查看次数

使用JavaFX Platform.runLater并从不同的线程访问UI

我有几个问题Platform.runLater.我有一个JavaFX Application类.在这个类中,我运行一个线程(该线程从网络套接字读取数据).

现在当我Stage在线程内部创建一个新的时,系统会抛出一个execption(JavaFX事件调度程序线程和我的netork-read线程不一样) - 我理解这种行为.

但另一方面是,我将文本从网络阅读器附加到现有的TextArea或添加/删除一些项目ListView<String>- 这不会引发异常 - 为什么?我认为JavaFX是单线程的(ui库部分).这与Swing中的相同:有时它可以工作,有时你只有垃圾(因为EDT)?

我的问题:

  • JavaFX事件调度程序线程何时抛出异常,何时抛出异常?
  • 有关于此的任何好文件吗?
  • 是否有更简单(短和清洁剂)的方式来使用Platform.runLater同一个run()方法?结合try catch(或多次捕获),它看起来很奇怪

我知道Platform.runLater在一个线程中的用法并不是那么好(设计解决方案)

java multithreading event-dispatch-thread javafx-2

8
推荐指数
2
解决办法
2万
查看次数