importjavafx.application.Application;importjavafx.stage.Stage;// この中のmainメソッドからアプリケーションを起動しちゃうpublicclassSampleApplicationextendsApplication{publicstaticvoidmain(String...args){Application.launch(SampleApplication.class);}@Overridepublicvoidstart(Stagestage)throwsException{// do something.}}
さて、この方法を採用している限りにおいては、
JavaFXのスレッドがどうのこうのでハマることはありません。
今回のテーマはJavaFXアプリケーションの外と内をわけることにあります。
JavaFXアプリケーションはバックグラウンドで実行します。
そのためにはjava.util.concurrent.ExecutorServiceを用います。
ApplicationLauncher.java
12345678910111213141516171819202122
importjavafx.application.Application;importjavafx.application.Platform;importjava.util.concurrent.ExecutorService;importjava.util.concurrent.Executors;// 先ほどのSampleApplicationを起動します。publicclassApplicationLauncher{privatestaticfinalExecutorServiceSERVICE=Executors.newFixedThreadPool(1);publicstaticvoidmain(String...args){// launch applicationSERVICE.submit(newRunnable(){@Overridepublicvoidrun(){Application.launch(SampleApplication.class);}});// do something// shutdown applicationPlatform.exit();SERVICE.shutdown();}}