本文共 1007 字,大约阅读时间需要 3 分钟。
futureTask - 未来任务, 封装次线程,给主线程以后调用(异步)。常见方法:isDone(), get()
调用方式:
new Thread(futureTask/runnable).start()
new ThreadPoolExecutor.execute(futureTask/callable/runnable))
Future x = Executors.newFixedThreadPool(3).submit(futureTask/callable/runnable)
例子:
public class Thread08_futureTask { public static void main(String[] args) { mainTask(); } public static void mainTask() { Long cnt = 3l; try { System.out.println("count1:" + cnt); new Thread(futureTask).start(); while (!futureTask.isDone()) { // isDone() } System.out.println("count2:" + (cnt + futureTask.get())); // get() } catch (Exception e) { e.printStackTrace(); } } static FutureTaskfutureTask = new FutureTask (new Callable () { public Long call() { try { int sleepTime = new Random().nextInt(2000); System.out.println("sleep " + sleepTime / 1000.0 + " seconds"); Thread.sleep(sleepTime); } catch (InterruptedException e) { e.printStackTrace(); } return Long.valueOf(2); } });}
转载地址:http://twili.baihongyu.com/