AnimationTimer是否在自己的线程中运行?

Car*_*ate 4 javafx

JavaFX AnimationTimer在启动时是否在单独的线程上运行?

我在调试器中运行了一个JavaFX应用程序,有或没有AnimationTimer,并且在两种情况下都运行了6个线程.另外,JavaDocs没有提到它的实现Runnable.

这表明它不是在自己的线程中运行,但就其本质而言,我认为它需要在自己的线程中运行以确保它以足够的时间运行.

如果它不是在自己的线程中运行,它是否只是在任何线程中运行它?这是否意味着如果我在创建AnimationTimer内部的时候修改Timer中的UI元素是安全Applicationstart()

Ita*_*iha 5

JavaFX的AnimationTimer在启动时是否在单独的线程上运行?

不,它没有.它在JavaFX应用程序线程上运行.当AnimationTimer handle()处于活动状态时,每个帧都会调用AnimationTimer的方法.通常,JavaFX会尝试保持60 fps的帧速率.

这是否意味着如果我在Application的start()中创建AnimationTimer,从Timer中修改UI元素是安全的?

是的.由于它在JavaFX应用程序线程上运行,因此修改场景图元素是完全正确的.只要确保你没有做大量计算handle().