zoukankan      html  css  js  c++  java
  • java异步线程

    使用一个ExecutorService,增加两个不可取消的子线程任务,并且获取他们的返回值。

    ​      @org.junit.Test
            public void testFuture() throws InterruptedException {
                    ExecutorService executor = Executors.newCachedThreadPool();
                    Task task = new Task();
                    NewTask newTask = new NewTask();
                    Future<Integer> result = executor.submit(task);
                    Future<String> ends = executor.submit(newTask);
                    executor.shutdown();
                    System.out.println("主线程开始运行");
                    System.out.println("主线程做一些复杂任务");
                    Thread.sleep(10000);
                    System.out.println("主线程需要子线程的计算结果");
                    try {
                            System.out.println("主线程得到子线程的结果:"+result.get());
                            System.out.println("主线程需要第二个子线程的数据:"+ends.get());
                    } catch (InterruptedException e) {
                            e.printStackTrace();
                    } catch (ExecutionException e) {
                            e.printStackTrace();
                    }
                    System.out.println("所有均完毕");
            }
    }
    class Task implements Callable<Integer>{
            public Integer call() throws Exception {
                    System.out.println("子线程计算开始");
                    Thread.sleep(3000);
                    int sum = 0;
                    for (int i=0;i<100000;i++){
                            sum += i ;
                    }
                    System.out.println("子线程已经计算完毕");
                    return sum;
            }
    }
    class  NewTask implements  Callable<String>{
            public String call() throws Exception {
                    System.out.println("第二个子线程已经运行完毕");
                    return "success";
            }
    }
       
    

    另: 如果main主线程不去获取子线程的结果,那么主线程完全可以不阻塞。那么,此时,主线程和子线程完全异步。此功能,可以做成类似MQ消息中间件之类的,消息异步进行发送。

  • 相关阅读:
    【BZOJ 2124】【CodeVS 1283】等差子序列
    【BZOJ 1036】【ZJOI 2008】树的统计Count
    【BZOJ 1901】【ZJU 2112】Dynamic Rankings
    【BZOJ 3924】【ZJOI 2015】幻想乡战略游戏
    【BZOJ 4103】【THUSC 2015】异或运算
    【BZOJ 4513】【SDOI 2016】储能表
    【HDU 3622】Bomb Game
    【BZOJ 3166】【HEOI 2013】Alo
    【BZOJ 3530】【SDOI 2014】数数
    【BZOJ 4567】【SCOI 2016】背单词
  • 原文地址:https://www.cnblogs.com/juepei/p/4560537.html
Copyright © 2011-2022 走看看