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

  • 相关阅读:
    js闭包
    mysql 创建索引
    模拟title实现提示功能
    数组的深拷贝和浅拷贝
    JavaScript总结之DOM基本操作(三)
    JavaScript总结之数组操作(二)
    JavaScript总结之字符串操作(一)
    Visual Studio Code中JavaScript开发环境的配置
    PhpStorm+PhpStudy开发环境的配置
    如何在个人网站上添加logo图标
  • 原文地址:https://www.cnblogs.com/FlyHeLanMan/p/7019024.html
Copyright © 2011-2022 走看看