• 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,拿不到线程的返回结果。

  • 相关阅读:
    HTML5之标签
    Linux常用命令(二十四)
    Linux常用命令(二十三)
    Python 定位excel表格的最后一个单元格的位置
    tornado学习
    Linux一些基础命令
    用python打造自己的SDK--使用setuptools打包安装
    Centos开放指定端口命令
    python sqlalchemy基本使用
    python rpc
  • 原文地址:https://www.cnblogs.com/FlyHeLanMan/p/7019024.html
Copyright © 2020-2023  润新知