Callable可以获取线程返回值

比眉伴天荒 2022-12-20 05:54 365阅读 0赞
  1. //测试future.get()方法是否会阻断主线程执行
  2. //结论:会,如果调用get()方法,只有子线程执行返回结果主线程才能继续执行,如果不调用get()方法主线程执行则无需等待子线程返回结果
  3. @Test
  4. public void test() throws ExecutionException, InterruptedException {
  5. ExecutorService executor = Executors.newFixedThreadPool(2);
  6. //创建一个Callable,3秒后返回String类型
  7. Callable myCallable = new Callable() {
  8. @Override
  9. public String call() throws Exception {
  10. //测试关键点
  11. Thread.sleep(3000);
  12. System.out.println("calld方法执行了");
  13. return "call方法返回值";
  14. }
  15. };
  16. //关闭线程池
  17. executor.shutdown();
  18. System.out.println("提交任务之前");
  19. Future future = executor.submit(myCallable);
  20. System.out.println("提交任务之后");
  21. System.out.println("获取返回值: " + future.get());
  22. System.out.println("子线程执行完毕,主线程继续执行。。。。。。");
  23. }

发表评论

表情:
评论列表 (有 0 条评论,365人围观)

还没有评论,来说两句吧...

相关阅读

    相关 线返回问题

    > 平时我们写Java程序或者是Android程序的时候有这样一个问题,耗时操作我们需要写到线程里面去,但是一旦写到线程里面去,我们又会发现很难获得返回值,当然天无绝人之路 我