This method is used to run a specified Runnable in the JavaFX Application thread, it waits for the task to finish before returning to the main thread. - Java JavaFX

Java examples for JavaFX:JavaFX Thread

Description

This method is used to run a specified Runnable in the JavaFX Application thread, it waits for the task to finish before returning to the main thread.

Demo Code

/*//from   w  w  w .j ava 2 s  .co  m
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you under the Apache License, Version 2.0 (the
     * "License"); you may not use this file except in compliance
     * with the License.  You may obtain a copy of the License at
     *
     *   http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing,
     * software distributed under the License is distributed on an
     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     * KIND, either express or implied.  See the License for the
     * specific language governing permissions and limitations
     * under the License.
     */
    //package com.java2s;
    import java.util.concurrent.CountDownLatch;
    import javafx.application.Platform;

    public class Main {
        /**
         * This method is used to run a specified Runnable in the FX Application thread,
         * it waits for the task to finish before returning to the main thread.
         * 
         * @param doRun This is the sepcifed task to be excuted by the FX Application thread
         * @return Nothing
         */
        public static void runInFXAndWait(Runnable doRun) {
   if (Platform.isFxApplicationThread()) {
      doRun.run();
      return;
   }
   final CountDownLatch doneLatch = new CountDownLatch(1);
   Platform.runLater(() -> {
      try {
         doRun.run();
      }
      finally {
         doneLatch.countDown();
      }
   });
   try {
      doneLatch.await();
   }
   catch (InterruptedException e) {
      Thread.currentThread().interrupt();
   }
}
    }

Related Tutorials