Java tutorial
//package com.java2s; /* * Copyright (c) 2002, 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this * particular file as subject to the "Classpath" exception as provided * by Oracle in the LICENSE file that accompanied this code. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ import javax.swing.*; import java.util.concurrent.Callable; import java.util.concurrent.Future; import java.util.concurrent.FutureTask; public class Main { /** * Submits a value-returning task for execution on the EDT and * returns a Future representing the pending results of the task. * * @param task the task to submit * @return a Future representing pending completion of the task * @throws NullPointerException if the task is null */ public static <V> Future<V> submit(Callable<V> task) { if (task == null) { throw new NullPointerException(); } FutureTask<V> future = new FutureTask<V>(task); execute(future); return future; } /** * Submits a Runnable task for execution on the EDT and returns a * Future representing that task. * * @param task the task to submit * @param result the result to return upon successful completion * @return a Future representing pending completion of the task, * and whose <tt>get()</tt> method will return the given * result value upon completion * @throws NullPointerException if the task is null */ public static <V> Future<V> submit(Runnable task, V result) { if (task == null) { throw new NullPointerException(); } FutureTask<V> future = new FutureTask<V>(task, result); execute(future); return future; } /** * Sends a Runnable to the EDT for the execution. */ private static void execute(Runnable command) { SwingUtilities.invokeLater(command); } }