Code example for FutureTask

Methods: get, run

0
     * @param c The Callable to run 
     * @return The result of the callable 
     * @throws ExecutionException c's exception 
     */ 
    public static <T> T runOnUiThreadBlocking(Callable<T> c) throws ExecutionException {
        FutureTask<T> task = new FutureTask<T>(c);
        runOnUiThread(task);
        try { 
            return task.get();
        } catch (InterruptedException e) {
            throw new RuntimeException("Interrupted waiting for callable", e);
        } 
    } 
 
    /** 
     * Run the supplied FutureTask on the main thread. The method will block 
     * only if the current thread is the main thread. 
     * 
     * @param task The FutureTask to run 
     * @return The queried task (to aid inline construction) 
     */ 
    public static <T> FutureTask<T> runOnUiThread(FutureTask<T> task) {
        if (runningOnUiThread()) { 
            task.run();
        } else { 
            postOnUiThread(task);
        } 
        return task;
    }