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

  • 相关阅读:
    vue-cli element axios sass 安装
    Rem-- ui图与适配手机的px换算
    REM
    Canvas画半圆扇形统计图
    在vue中安装SASS
    在vue中引用.SCSS的公用文件
    Echart--折线图手柄触发事件
    vue 脚手架webpack打包后,解决能看到vue源码的问题
    js 函数 /变量/ 以及函数中形参的预解析的顺序
    【算法日记】4.递归和快速排序
  • 原文地址:https://www.cnblogs.com/FlyHeLanMan/p/7019024.html
Copyright © 2011-2022 走看看