JavaFx:为什么剂量'Thread.sleep()'停止UI线程?

Eru*_*ang 1 java multithreading javafx javafx-2 javafx-8

public void startApp(){
       primaryStage.show();
       new Thread(new Runnable(){
             public void run(){
                  Thread.sleep(20000);//2 seconds

                  //do something.........

                  System.out.println("all things done");
             }
       }).run();
}
Run Code Online (Sandbox Code Playgroud)

我认为primaryStage将首先显示.但事实上,在新线程完成之后(在打印完所有事情之后),primaryStage始终显示.如果我删除'Thread.sleep(20000)',那么在所有事情完成之后,primaryStage也会被删除.为什么?我错了吗?先谢谢大家!

Cod*_*der 9

新线程完成后,primaryStage始终显示

你不是在这里创建一个新线程.您只是run()在Runnable对象上调用该方法.

您需要使用.start()而不是.run()在新线程中执行它.