老师,可能是看久了,头有点懵
Future类中,
ExecutorService executorService = Executors.newCachedThreadPool();
Future<String> future = executorService.submit(new MyCallable());
log.info("do something in main");
Thread.sleep(1000);
String result = future.get();
log.info("result:{}", result);
实例化一个线程池,开启一个线程,去接收MyCallable中的结果,然后future.get获得结果,
再看futureTask类
new Thread(futureTask).start();
log.info("do something in main");
Thread.sleep(1000);
String result = futureTask.get();
log.info("result:{}", result);
futureTask也是开了个线程接收返回结果,直观来看,菜鸟基本都会觉得第一种写法,少了个线程启动start,反而要方便些,作用跟第二种也差不多。
问题:
这两种方式,分别是开了几个线程,我有点不太理解,该怎么算线程。
既然Task是单独开启一个线程,来存放所监督的线程返回结果,第一个future中,直接在线程池多拿个线程出来,效果不是一样的?
(这问,也是由于没太明白这两个例子中线程数该怎么算,我觉得把线程数说出来,比如我理解的是,第一个例子,开启一个线程,做了两件事,第二个例子,开启两个线程,分别做了某一件事,理解起来更方便,当然我这理解可能是错的)