Future的使用场景:将计算或IO异步化,提高程序并行度。 public class FutureTaskTest{ public static void main(String[] args) { //计算模块 Callable<Integer> eval = new Callable<Integer>() { @Override public Integer call() throws Exception { Thread.sleep(3000); return -1; } }; //方式一:通过FutureTask来使用Future FutureTask<Integer> ft = new FutureTask<>(eval); Thread t = new Thread(){ public void run() { try { System.out.println("t1 Before"); //需要手动调用run方法 ft.run(); System.out.println("t1 result " + ft.get()); System.out.println("t1 After"); } catch (Exception e) { e.printStackTrace(); } } }; t.start(); //方式二:通过ExecutorService框架来使用Future ExecutorService executorService = Executors.newFixedThreadPool(2); //ExecutorService框架会调用run方法,只需submit提交任务 Future<Integer> efr = executorService.submit(eval); Thread t2 = new Thread(){ public void run(){ try { System.out.println("t2 Before"); System.out.println("t2 result " + efr.get(1000, TimeUnit.MILLISECONDS)); System.out.println("t2 After"); } catch(Exception e){ e.printStackTrace(); } } }; executorService.submit(t2); } }
Future使用Demo
猜你喜欢
转载自blog.csdn.net/Wengzhengcun/article/details/87293103
今日推荐
周排行