1、程序建立1000个线程,有可能造成系统创建大量线程而导致消耗完系统内存,还会增加创建和销毁线程上所花的时间以及系统资源的开销

2、在创建线程数多的情况下,可以考虑使用线程池

以下是Java自带的几种线程池:

(1)、newFixedThreadPool 创建一个指定工作线程数量的线程池。

每当提交一个任务就创建一个工作线程,如果工作线程数量达到线程池初始的最大数,则将提交的任务存入到池队列中。

(2)、newCachedThreadPool 创建一个可缓存的线程池。

这种类型的线程池特点是:

1).工作线程的创建数量几乎没有限制(其实也有限制的,数目为Interger. MAX_VALUE), 这样可灵活的往线程池中添加线程。

2).如果长时间没有往线程池中提交任务,即如果工作线程空闲了指定的时间(默认为1分钟),则该工作线程将自动终止。终止后,如果你又提交了新的任务,则线程池重新创建一个工作线程。

(3)、newSingleThreadExecutor 创建一个单线程化的Executor,即只创建唯一的工作者线程来执行任务,如果这个线程异常结束,会有另一个取代它,保证顺序执行(我觉得这点是它的特色)。

单工作线程最大的特点是可保证顺序地执行各个任务,并且在任意给定的时间不会有多个线程是活动的 。

(4)、newScheduleThreadPool 创建一个定长的线程池,而且支持定时的以及周期性的任务执行,类似于Timer。

3、示例代码

package test; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExecutorTest { public static void main(String[] args) { ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 1000; i++) { cachedThreadPool.execute(new Runnable() { public void run() { //在这里执行你需要的功能 } }); } } }

取消

评论

java 1000个线程_java,一个程序建立1000个线程,每一个线程加1到一个变量sum。相关推荐

  1. C语言(CED)编写一个程序,求两个字符之间的加减运算。

    (请先看置顶博文)https://blog.csdn.net/GenuineMonster/article/details/104495419 复习C语言,不同的心境遇到了不同的问题: 问题: 编写一 ...

  2. java进程与线程_Java多线程笔记(零):进程、线程与通用概念

    前言 不积跬步,无以至千里:不积小流,无以成江海.在学习Java多线程相关的知识前,我们首先需要去了解一点操作系统的进程.线程以及相关的基础概念. 进程 通常,我们把一个程序的执行称为一个进程.反过来 ...

  3. auto.js停止所有线程_Java多线程编程基础知识 概念介绍,以及线程状态

    一.进程 进程是操作系统结构的基础:是一次程序的执行:是一个程序及其数据在处理机上顺序执行时所发生的活动.操作系统中,几乎所有运行中的任务对应一条进程(Process).一个程序进入内存运行,即变成一 ...

  4. C++编程练习:抽象类——编写一个程序,计算三角形、正方形的面积,抽象出一个基类base。

    例.编写一个程序,要求计算三角形.正方形的面积,抽象出一个基类base,在其中说明一个虚函数display( )用来展示其参数且求出面积. 代码如下: 头文件headfile.h: #pragma o ...

  5. java数字计算结果_Java编写程序之输入一个数字实现该数字阶乘的计算

    需求说明: 编写Java程序,输入一个数字,实现该数字阶乘的计算.一个数字的阶乘是所有小于及等于该数的正整数的积,自然数n的阶乘写作n! .例如,5的阶乘等于1*2*3*4*5,表示为5! = 120 ...

  6. java中person作用_Java题目:建立一个人类(Person)和学生类(Student) 功能要求:

    满意答案 lialei1 2017.11.25 采纳率:48%    等级:12 已帮助:14031人 package test; /** * Person中包含4个保护型的数据成员name,addr ...

  7. java在实际应用_Java应用程序如何部署在“现实世界”中?

    这取决于应用程序.有很多选项取决于用户如何使用您的应用程序.通常它被包装成罐子或专门的罐子(战争,耳朵). 理论上,您可以使用.class文件压缩原始目录结构,并提供为用户运行java命令的shell ...

  8. java开发电脑软件_JAVA开发程序员,开发使用笔记本推荐?

    同 java 路过. 买笔记本,我们可以从以下几点来选购参考. "硬参数"CPU 内存 硬盘 显卡 "软参数"屏幕 重量 散热 那依次来按照顺序来介绍下. &q ...

  9. java端到端_Java应用程序性能监控:复杂分布式应用程序的端到端性能

    java端到端 通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控. 参加AppDynamics APM导览! 在最复杂和分布式环境中端到端监视Java应用程序性能-专注于业务事务. 自 ...

最新文章

  1. Redis的安装部署
  2. python基础教程:类和对象
  3. 怀卡托大学硕士计算机科学,2020年怀卡托大学研究生一般几年毕业
  4. c++ primer 5th,练习11.19,编写代码验证
  5. VBScript 教程之数据库篇
  6. 【Android】完善Android学习(二:API 2.3.4)
  7. Unix环境编程-守护进程
  8. android schedule 参数,android – requestLocationUpdates minTime参数的用途
  9. weblogic错误页面
  10. 10. InnoDB表空间加密
  11. HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
  12. 免费拥有个人云主机——AWS免费EC2套餐
  13. 程序江湖事——docker江湖缘
  14. Machine Learning Algorithms Study Notes(4)—无监督学习(unsupervised learning)
  15. r语言和python的区别-Python和R语言之分析对比
  16. linux怎样通过手机上网,Linux系统通过手机GPRS上网的设置教程
  17. js中用正则表达式判断字符串中是否包含中文和英文
  18. 面试笔记:面经-瓜子
  19. LC28 Generate Parentheses
  20. 广东迅视资管 电子视觉芯片每秒最快可计算181帧

热门文章

  1. 实操教程|Pytorch常用损失函数拆解
  2. 2021入门推荐系统,应该从哪入手?
  3. 面试官:原生GAN都没复现过,自己走还是我送你?
  4. 这个假发太逼真!GAN 帮你换发型,alignment 步骤去掉生硬感
  5. 基于强化学习的自动化剪枝模型
  6. 清华旷视:让VGG再次伟大!
  7. 华为鸿蒙系统2.0发布了!AI人工智能大有可为!
  8. 全球 43 亿 IPv4 地址宣告耗尽!
  9. linux定时任务简记
  10. 网络空间安全之信息追踪——学习笔记 利用门户网站,综合信息追踪