在当前线程上运行RunLater或将任务提供给当前线程以便稍后运行

时间:2016-10-16 22:13:08

标签: java multithreading tomcat java-8

我希望实现Platform.runLater()的功能,但在当前线程上,程序与JavaFX无关,它是Tomcat服务器。

我尝试Platform.runLater(this::foo);,但我很确定它没有做任何事情。可能是因为没有JavaFX线程可以做到这一点。

我宁愿不打开ScheduledExecutorService,因为它会成为许多实例上的另一个线程(这么多线程),更不用说它需要运行的方法是{{ 1}}所以我闻到了僵局。

我无法在synchronized上找到任何有用的方法(Thread.currentThread()run不参加参数)。

还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

我使用newSingleThreadExecutor来实现这一点,因为它可以将多个runnables带到队列并按顺序运行它们,它可以从几个地方给出任务并且它将逐个运行它们,它类似于{ {1}}。

有一个单独的线程,该类的所有实例都持有引用,解决了“多线程”问题。

它也不会导致死锁,因为它最多只等待另一个线程完成同步函数,然后只运行这一个函数。