Multithreading JavaUDP套接字和JavaFXGUI

Multithreading JavaUDP套接字和JavaFXGUI,multithreading,javafx,udp,Multithreading,Javafx,Udp,我的问题是我需要: 一个线程接收包含笛卡尔坐标的UDP数据 JavaFX线程(函数?!)在场景中打印这些坐标 因此,我不断地从UDP套接字接收数据,并将数据保存在BlockingQueue中。 该队列对于JavaFX线程和UDP_读取线程是通用的。现在,我需要一个JavaFX场景(函数?!),它可以连续地从队列中获取数据,并在场景中打印(渲染/演示)这些坐标(使用矩形或其他形状),但我不能在JavaFX线程中使用While循环 我尝试了任务类,但它似乎只有在任务完成时才有用 时间是有限的,不

我的问题是我需要:

  • 一个线程接收包含笛卡尔坐标的UDP数据
  • JavaFX线程(函数?!)在场景中打印这些坐标
因此,我不断地从UDP套接字接收数据,并将数据保存在BlockingQueue中。 该队列对于JavaFX线程和UDP_读取线程是通用的。现在,我需要一个JavaFX场景(函数?!),它可以连续地从队列中获取数据,并在场景中打印(渲染/演示)这些坐标(使用矩形或其他形状),但我不能在JavaFX线程中使用While循环

我尝试了
任务
类,但它似乎只有在任务完成时才有用 时间是有限的,不是连续的


任何帮助都会从您所写的内容中得到,我可以假设如下:

  • 您正在从其他线程或通过网络向应用程序接收坐标数据
  • 您希望在JavaFX应用程序窗口中演示坐标数据
  • 我很清楚可能会有更好的解决方案,但是,我会以以下方式解决:

  • 在JavaFX类中具有全局变量。这些变量用于存储和获取坐标数据
  • 在JavaFX类中有一个内部类,用于侦听/接收UDP数据。在这个类中,您将运行侦听UDP连接的线程,并在步骤1的全局变量中存储坐标数据
  • 使用AnimationTimer类可以转换/更新要在应用程序窗口中显示的形状
  • 在全局变量周围设置同步块非常重要,这样您就不会面临数据不一致的问题。
    希望这会有所帮助。

    ?不适用于while循环如何不适用于while循环?如果我将while循环放入invoke later:Platform.runLater(new Runnable(){@Override public void run(){while(true){…print coordinate….}主gui冻结
    InvokeLater
    用于Swing,而不是JavaFX,因此它在这里不适用。但是基本上是等效的,应该可以工作(尽管您不应该将
    while(true)
    放在runLater调用的内容中).也许你想提供一个。