1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| package com.rain.demo; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; //创建Callable接口实现类 class Task implements Callable<Integer>{ @Override //实现call方法 public Integer call() throws Exception { // TODO Auto-generated method stub int i = 0; for(i=0;i<5;i++){ System.out.println(Thread.currentThread().getName()+":"+i); } //返回call的返回值 return i; } } //主类 public class CallableFutureDemo{ public static void main(String[] args) { //使用Future类包装Callable实现类的实例 FutureTask<Integer> task = new FutureTask<Integer>(new Task()); //创建线程,使用futureTask对象的task作为Thread对象的targer,启动线程 new Thread(task,"子线程").start(); try { System.out.println("子线程返回值:"+task.get()); }catch(InterruptedException e){ e.printStackTrace(); } catch (ExecutionException e) { // TODO: handle exception e.printStackTrace(); } for(int i=10;i<15;i++){ System.out.println(Thread.currentThread().getName()+":"+i); } } }
|