我想实现 Platform.runLater()
的功能,但在当前线程上,该程序与 JavaFX 无关,它是一个 Tomcat 服务器。
我尝试执行 Platform.runLater(this::foo);
但我很确定它不会执行任何操作。可能是因为没有 JavaFX 线程来执行此操作。
我宁愿不打开 ScheduledExecutorService
因为它将成为许多实例(这么多线程)上的另一个线程,更不用说它需要运行的方法是 synchronized
所以我闻到了死锁的味道。
我在 Thread.currentThread()
上找不到任何有用的方法(run
和 start
不带参数)。
还有其他选择吗?
最佳答案
我用了 newSingleThreadExecutor为了实现这一点,由于它可以将多个 runnable 放入一个队列并依次运行它们,因此可以从多个地方给它任务,它会一个一个地运行它们,它类似于 platform.runLater
。
拥有该类的所有实例都引用的单个线程,解决了“多线程”问题。
它也不会导致死锁,因为它最多只会等待另一个线程完成同步函数,然后只运行这个函数。
关于java - RunLater 在当前线程上运行或给当前线程一个任务稍后运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40076042/