Future模式的主要使用场景:当前线程须要依赖另外一线程的返回数据而且处理数据的线程又至关耗时,那么Future模式就可使主线程提交数据请求给另外一线程后继续处理业务逻辑,等须要时将数据从另外一线程返回,很好的利用了等待时间。java
举一个能说明问题又简单的例子,本例使用JDK库的Future相关类实现:ide
package concurrent; import java.util.concurrent.Callable; public class DataProcessThread implements Callable<String> { @Override public String call() throws Exception { // TODO Auto-generated method stub Thread.sleep(10000);//模拟数据处理 return "数据返回"; } }
package concurrent; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.FutureTask; public class MainThread { public static void main(String[] args) throws InterruptedException, ExecutionException { // TODO Auto-generated method stub DataProcessThread dataProcessThread = new DataProcessThread(); FutureTask<String> future = new FutureTask<String>(dataProcessThread); ExecutorService executor = Executors.newFixedThreadPool(1); executor.submit(future); Thread.sleep(10000);//模拟继续处理自身其余业务 while (true) { if (future.isDone()) { System.out.println(future.get()); break; } } executor.shutdown(); } }