1 package concurrency.callable; 2 3 import java.util.concurrent.Callable; 4 5 /** 6 * <pre> 7 * Callable 与 Future 是为了适应 jdk1.6多并发产生的 8 * Callable 与 Runnable接口 9 * 共同 : 10 * 1.都是一种任务,被其他线程调度的任务 11 * 区别 : 12 * 1.Callable 用的是Call ,Runnable用的是run 13 * 2.call可以throw Excepiton ,run 不行 14 * 3.call 可以返回东西,run 不行 15 * </pre> 16 * 17 * @author yicai.liu 18 * @param <V> 19 */ 20 public class MyCallable<V> implements Callable<V> 21 { 22 23 @Override 24 public V call() throws Exception 25 { 26 return null; 27 } 28 29 }
1 package concurrency.future; 2 3 import java.util.concurrent.ExecutionException; 4 import java.util.concurrent.Future; 5 import java.util.concurrent.TimeUnit; 6 import java.util.concurrent.TimeoutException; 7 8 /** 9 * <pre> 10 * Future 接口用处 11 * 1 探测 异步 执行的结果 V get() ,等待计算,直到完成,获取结果 12 * 2 检查计算是否完成 isDone() 13 * 3 取消任务的执行 cancel(1 true/ 2 false) [true : 暴力中断任务执行 / false :允许正在执行的任务完成] 14 * </pre> 15 * 16 * @author yicai.liu 17 * @param <V> 18 */ 19 public class MyFuture<V> implements Future<V> 20 { 21 @Override 22 public boolean cancel(boolean mayInterruptIfRunning) 23 { 24 return false; 25 } 26 27 @Override 28 public boolean isCancelled() 29 { 30 return false; 31 } 32 33 @Override 34 public boolean isDone() 35 { 36 return false; 37 } 38 39 @Override 40 public V get() throws InterruptedException, ExecutionException 41 { 42 return null; 43 } 44 45 @Override 46 public V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException 47 { 48 return null; 49 } 50 51 }