zoukankan      html  css  js  c++  java
  • ExecutorService 多线程

    ExecutorService 使得在java中对多线程的处理变得更加简单,优雅

    ExecutorService 主要用到两个方法execute方法,获取不到返回结果submit方法可以制定Future 从而获取到返回结果,下面分别做说明:

    1、submit方法:

    Future是每个线程的返回结果,结合Callable使用,这样可以拿到所有线程的返回结果。

    还是以之前的例子,获取两个文本内容并且拼接。

     1 public static void main(String[] args) {
     2         String filNames[] = {"d:\a.txt","d:\b.txt"};
     3         ExecutorService threadPool = Executors.newFixedThreadPool(2);
     4         //每个线程返回一个Future对象里面是线程返回结果
     5         List<Future<String>> futures = new ArrayList<Future<String>>();
     6         for(final String fileName : filNames){
     7             futures.add(threadPool.submit(new Callable<String>() {
     8                 @Override
     9                 public String call() throws Exception {
    10                     File file = new File(fileName);
    11                     InputStreamReader in = new InputStreamReader(new FileInputStream(file),"gbk");
    12                     BufferedReader br = new BufferedReader(in);
    13                     String  str= br.readLine();
    14                     return str;
    15                 }
    16             }));
    17         }
    18         threadPool.shutdown();
    19         //处理每个线程的返回结果
    20         for(Future<String> future : futures){
    21             try {
    22                 System.out.println(future.get());
    23             } catch (InterruptedException | ExecutionException e) {
    24                 e.printStackTrace();
    25             }
    26         }
    27     }

    2、execute方法:

    execute方法不支持返回结果,因为参数是Runnable,拿不到线程的返回结果。

  • 相关阅读:
    三层架构简单实例【转】
    排序 普通插入法排序
    排序 选择排序
    C#中的继承与覆盖
    排序 冒泡排序法
    c#使用Split分割字符串的几种方法
    GROUP BY,WHERE,HAVING之间的区别和用法
    递归 斐波那契数列
    【公众号系列】一文看懂税费改革
    【MM系列】SAP库龄报表逻辑理解
  • 原文地址:https://www.cnblogs.com/FlyHeLanMan/p/7019024.html
Copyright © 2011-2022 走看看