说明:

  线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。 Executors各个方法的弊端:

  • newFixedThreadPoolnewSingleThreadExecutor:

    主要问题是堆积的请求处理队列可能会耗费非常大的内存,甚至OOM。

  • newCachedThreadPoolnewScheduledThreadPool:

    主要问题是线程数最大数是Integer.MAX_VALUE,可能会创建数量非常多的线程,甚至OOM。

  Executors 中各个线程解释链接:https://blog.csdn.net/qq_36381855/article/details/79942555
---------------------

  推荐使用一下两种:

  • ThreadPoolExecutor 创建线程池

    public class ThreadPoolTest {private volatile static ExecutorService executorService;public static ExecutorService getExecutorService() {if (executorService == null) {synchronized (ThreadPoolTest.class) {/*** 使用谷歌的guava框架* ThreadPoolExecutor参数解释*   1.corePoolSize 核心线程池大小*   2.maximumPoolSize 线程池最大容量大小*   3.keepAliveTime 线程池空闲时,线程存活的时间*   4.TimeUnit 时间单位*   5.ThreadFactory 线程工厂*   6.BlockingQueue任务队列*   7.RejectedExecutionHandler 线程拒绝策略*/ThreadFactory namedThreadFactory = new ThreadFactoryBuilder().setNameFormat("demo-pool-%d").build();executorService = new ThreadPoolExecutor(10, 20,0L, TimeUnit.MILLISECONDS,new LinkedBlockingQueue<Runnable>(1024), namedThreadFactory, new ThreadPoolExecutor.AbortPolicy());}}return executorService;}
    }

  • ThreadPoolTaskExecutor 创建线程池

        public Executor getAsyncExecutor() {ThreadPoolTaskExecutor threadPool = new ThreadPoolTaskExecutor();// 设置核心线程数threadPool.setCorePoolSize(5);// 设置最大线程数threadPool.setMaxPoolSize(10);// 线程池所使用的缓冲队列threadPool.setQueueCapacity(25);// 设置线程活跃时间(秒)threadPool.setKeepAliveSeconds(60);// 等待所有任务结束后再关闭线程池threadPool.setWaitForTasksToCompleteOnShutdown(true);// 线程名称前缀threadPool.setThreadNamePrefix("");// 初始化线程
            threadPool.initialize();return threadPool;}

---------------------

原文:https://blog.csdn.net/more_try/article/details/81506501

转载于:https://www.cnblogs.com/BestWishesZJ/p/10305179.html

Java 新建线程时使用线程池处理相关推荐

  1. java 资源锁_concurrent包 线程池、资源封锁和队列、ReentrantReadWriteLock介绍

    jdk1.5后,提供了java.util.concurrent包,它可以实现线程池,你把线程当成普通对象就可以了,它来负责调度和执行 包括两类线程池 固定线程池 可变线程池 延迟线程池 固定线程池 p ...

  2. java笔记--查看和修改线程名称

    查看和修改线程名称 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3893797.html  "谢谢-- java是一种允许 ...

  3. Java - 在进行数据库编程时,连接池有什么作用?

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击人工智能教程 由于创建连接和释放连接都有很大的开销(尤其是数据库服务器不在本地时,每次建立连接都需要进行 ...

  4. java线程 属性_Java 线程基础

    本文部分摘自<Java 并发编程的艺术> 线程简介 1. 什么是线程? 现代操作系统在运行一个程序时,会为其创建一个进程,一个进程里可以创建多个线程.现代操作系统调度的最小单元是线程,也叫 ...

  5. c++ 线程什么时候run_阿里后端Java面试题:启动线程是start()还是run()?为什么?...

    面试官:请问启动线程是start()还是run()方法,能谈谈吗? 应聘者:start()方法 当用start()开始一个线程后,线程就进入就绪状态,使线程所代表的虚拟处理机处于可运行状态,这意味着它 ...

  6. 【C++ 语言】线程 ( 线程创建方法 | 线程标识符 | 线程属性 | 线程属性初始化 | 线程属性销毁 | 分离线程 | 线程调度策略 | 线程优先级 | 线程等待 )

    文章目录 I 线程创建方法 II 线程执行函数 III 线程标识符 IV 线程属性 V 线程属性 1 ( 分离线程 | 非分离线程 ) VI 线程属性 2 ( 线程调度策略 ) VII 线程属性 3 ...

  7. android线程栈默认大小,线程的默认最大堆栈大小 - Internet Information Services | Microsoft Docs...

    在本机 IIS 进程中创建线程的默认最大堆栈大小为 256 KB 12/29/2020 本文内容 本文介绍由本机 IIS 进程创建的线程的默认最大堆栈Microsoft Internet Inform ...

  8. IOS多线程系统学习之线程同步与线程通信

    多线程编程是有趣的事情,它很容易突然出现"错误情况",这是由于系统的线程调度具有一定的随机性造成的.不过,即使程序偶然出现"错误情况",这是由于系统的线程调度具 ...

  9. 线程退出和线程资源回收问题

    最近项目中遇到循环8M的内存泄漏问题,排查后发现是由于特殊场景下使子线程异常退出,主线程发现子线程退出便再次创建线程,此时未回收退出线程的资源造成了内存泄漏,导致数据库宿主机oom,此问题不仅导致内存 ...

最新文章

  1. HDU 2519 新生晚会【求组合数】
  2. x = x (x-1)
  3. 用Python和OpenCV创建一个图片搜索引擎的完整指南
  4. 10个最佳Node.js企业应用案例:从Uber到LinkedIn
  5. python3 缺少PIP解决办法
  6. 2、Zookeeper集群搭建、命令行Client操作
  7. Redis.conf 详解
  8. 设计类毕业生求职指南!手把手帮你从零开始找到工作!
  9. 资源---vc++2010学习版---注册码(注册码密匙)
  10. ui自动化html模板,UI自动化学习分享ppt模板
  11. TeamViewer跟向日葵远程控制软件有什么区别?
  12. 万用表测试软件,仅用万用表作为检测工具的集成电路
  13. 【Linux实验】用户和组群账户管理
  14. CTF主办方指南之对抗搅屎棍
  15. 【多目标优化】3. 基于分解的多目标进化算法 —(MOEA/D)
  16. 《视频理解中的神经网络结构设计》讲座笔记 作者:邱钊凡
  17. iOS获取当前网络连接状态WiFi、5G、4G、3G、2G
  18. 写出高斯定理的数学形式并文字解释
  19. 计算机基础考证强化训练范文,计算机基础知识题强化训练.doc
  20. Java接口(笔记本USB接口案例)

热门文章

  1. Visual Studio Code 202008 Python 扩展更新
  2. 将MongoDB.NET驱动程序与.NET Core WebAPI一起使用
  3. 华为交换机静态路由配置案例_快速了解配置三层交换机策略路由配置
  4. SVG实现loading
  5. php无限极 left right,php无限极分类实现的两种解决方法
  6. lambda表达式学习(详细理解 ) 重点在最后
  7. python怎么创意出字符图形_创造课程系列:Python入门
  8. 微信小程序wx.showToast
  9. 计算机网络dns实验报告,计算机网络DNS以及HTTP协议实验报告
  10. webpack 4 入门教程一