读书人

java并发包(2)Future

发布时间: 2013-08-11 22:22:29 作者: rapoo

java并发包(二)Future
import java.util.concurrent.Callable;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.Future;import java.util.concurrent.TimeUnit;/** * Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。 * 通过Future对象可了解任务执行情况,可取消任务的执行,还可获取任务执行的结果。 */public class FutureTest{ public static void main(String[] args) throws Exception { ExecutorService threadPool = Executors.newSingleThreadExecutor(); Future<String> future = threadPool.submit(new TaskCallable()); // 返回true,如果线程在正常执行完之前,被取消 System.out.println(future.isCancelled());// false // 如果任务执行完成,返回true // 线程可能由于正常终止、异常或取消而完成,在所有这些情况中,此方法都将返回 true System.out.println(future.isDone()); // false try { // 如果等待1000ms,仍然不能获取线程的执行结果,抛出TimeoutException System.out.println(future.get(1000, TimeUnit.MILLISECONDS)); } catch (Exception e) { System.out.println("error:超过1s,仍然不能获取线程计算结果!"); } // 等待线程计算完成,然后获取执行结果 // 调用future的get方法,主线程进入阻塞状态,等待线程结果返回,如果线程执行抛异常,这里也会将异常抛出! System.out.println(future.get());// futureResult threadPool.shutdown(); }}

???TaskCallable实现参考

?java并发包(一)Callable接口 http://aty.iteye.com/blog/1922658

读书人网 >编程

热点推荐