基于newFixedThreadPool实现多线程案例

 更新时间:2020年11月10日 09:51:45   作者:牛鼻子老赵  
这篇文章主要介绍了基于newFixedThreadPool实现多线程案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

1、异步提交,串行改为并行处理

package com.hao.thread;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.Future;

public class ThreadTest {

  public static void main(String[] args) {
    long start = System.currentTimeMillis();
    System.out.println(action());
    long end = System.currentTimeMillis();
    System.out.println(end - start);
  }

  public static List<String> action() {
    List<String> list = new ArrayList<String>();
    ExecutorService pool = Executors.newFixedThreadPool(3);
    Future<String> submit1 = pool.submit(() -> action1("action1"));
    Future<String> submit2 = pool.submit(() -> action2("action2"));
    Future<String> submit3 = pool.submit(() -> action3("action3"));
    try {
      list.add(submit1.get());
      list.add(submit2.get());
      list.add(submit3.get());
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      pool.shutdown();
    }
    return list;
  }

  private static String action1(String action1) {
    sleep(5000);
    return action1 + " # " + Thread.currentThread().getName();
  }

  private static String action2(String action2) {
    sleep(5000);
    return action2 + " # " + Thread.currentThread().getName();
  }

  private static String action3(String action3) {
    sleep(5000);
    return action3 + " # " + Thread.currentThread().getName();
  }

  private static void sleep(long millis) {
    try {
      Thread.sleep(millis);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
  }
}

2、处理结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • springboot返回前端中文乱码的解决

    springboot返回前端中文乱码的解决

    这篇文章主要介绍了springboot返回前端中文乱码的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • java工具类StringUtils使用实例详解

    java工具类StringUtils使用实例详解

    这篇文章主要为大家介绍了java工具类StringUtils使用实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • @RequestBody注解的原理及使用技巧分享

    @RequestBody注解的原理及使用技巧分享

    这篇文章主要介绍了@RequestBody注解的原理及使用技巧分享,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • Java生产者消费者的三种实现方式

    Java生产者消费者的三种实现方式

    这篇文章主要介绍了Java生产者消费者的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Mybatis + js 实现下拉列表二级联动效果

    Mybatis + js 实现下拉列表二级联动效果

    这篇文章给大家介绍基于Mybatis + js 实现下拉列表二级联动效果,实现代码分为前端界面实现和后端处理方法,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-06-06
  • Java后缀数组之求sa数组的实例代码

    Java后缀数组之求sa数组的实例代码

    后缀数组就是一个字符串所有后缀大小排序后的一个集合,然后我们根据后缀数组的一些性质就可以实现各种需求。这篇文章主要介绍了Java后缀数组-求sa数组,需要的朋友可以参考下
    2018-04-04
  • Java中的线程安全集合CopyOnWriteArrayList解析

    Java中的线程安全集合CopyOnWriteArrayList解析

    这篇文章主要介绍了Java中的线程安全CopyOnWriteArrayList解析,CopyOnWriteArrayList是ArrayList的线程安全版本,从他的名字可以推测,CopyOnWriteArrayList是在有写操作的时候会copy一份数据,然后写完再设置成新的数据,需要的朋友可以参考下
    2023-12-12
  • JAVA 对数组进行初始化填充的方法示例

    JAVA 对数组进行初始化填充的方法示例

    这篇文章主要介绍了JAVA 对数组进行初始化填充的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 浅谈mac下maven的安装配置与使用

    浅谈mac下maven的安装配置与使用

    这篇文章主要介绍了浅谈mac下maven的安装配置与使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 浅谈Java中的四种引用方式的区别

    浅谈Java中的四种引用方式的区别

    下面小编就为大家带来一篇浅谈Java中的四种引用方式的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09

最新评论