基于newFixedThreadPool实现多线程案例
作者:牛鼻子老赵
这篇文章主要介绍了基于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、处理结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
- Django如何使用asyncio协程和ThreadPoolExecutor多线程
- python线程池 ThreadPoolExecutor 的用法示例
- java ThreadPool线程池的使用,线程池工具类用法说明
- java 定时器线程池(ScheduledThreadPoolExecutor)的实现
- Java线程池ThreadPoolExecutor原理及使用实例
- 解决python ThreadPoolExecutor 线程池中的异常捕获问题
- 基于C++11的threadpool线程池(简洁且可以带任意多的参数)
- Java ThreadPoolExecutor 线程池的使用介绍
- Spring线程池ThreadPoolExecutor配置并且得到任务执行的结果
- Spring Boot利用@Async异步调用:ThreadPoolTaskScheduler线程池的优雅关闭详解