Runs the given Callable on the JavaFX Application Thread. - Java JavaFX

Java examples for JavaFX:Platform

Description

Runs the given Callable on the JavaFX Application Thread.

Demo Code

/**// w  w  w  .  j  a v  a 2s  .  co m
     * Copyright (c) 2011, 2014, Jonathan Giles, Johan Vos, Hendrik Ebbers
     * All rights reserved.
     *
     * Redistribution and use in source and binary forms, with or without
     * modification, are permitted provided that the following conditions are met:
     *     * Redistributions of source code must retain the above copyright
     * notice, this list of conditions and the following disclaimer.
     *     * Redistributions in binary form must reproduce the above copyright
     * notice, this list of conditions and the following disclaimer in the
     * documentation and/or other materials provided with the distribution.
     *     * Neither the name of DataFX, the website javafxdata.org, nor the
     * names of its contributors may be used to endorse or promote products
     * derived from this software without specific prior written permission.
     *
     * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     * DISCLAIMED. IN NO EVENT SHALL DataFX BE LIABLE FOR ANY
     * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     */
//package com.java2s;
import javafx.application.Platform;

import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;

import java.util.concurrent.FutureTask;

public class Main {
    /**
     * Runs the given <tt>Callable</tt> on the JavaFX Application Thread. The method blocks until the <tt>Callable</tt> is executed completely. The return value of the call() method of the callable will be returned
     * You should use the {@link io.datafx.core.concurrent.ProcessChain} for concurrent tasks and background tasks
     * instead of using this low level API.
     *
     * @param callable the callable that will be executed on the JavaFX Application Thread
     * @param <T>      return type of the callable
     * @return return value of the executed call() method of the <tt>Callable</tt>
     * @throws InterruptedException if the JavaFX Application Thread was interrupted while waiting
     * @throws ExecutionException   if the call of the run method of the <tt>Callable</tt> threw an exception
     */
    public static <T> T runCallableAndWait(Callable<T> callable)
            throws InterruptedException, ExecutionException {
        FutureTask<T> future = new FutureTask<T>(callable);
        Platform.runLater(future);
        return future.get();
    }
}

Related Tutorials