import java.util.concurrent.*;/*** 多线程线程池的基本创建,使用方法** @author silence*/
public class Silence {public static void main(String[] args) {//创建一个线程池 最大线程数量20  核心线程15//如果提交了超过15 不超过20的任务,会创建临时线程。//临时线程超过 60秒会被销毁//如果提交任务数量,超过  最大线程数量+排队数量, 会抛出异常ThreadPoolExecutor thread = new ThreadPoolExecutor(//核心线程5,//最大线程数量10,//等待时间60,//等待时间的单位(秒)TimeUnit.SECONDS,//阻塞队列,排队的数量new ArrayBlockingQueue<>(10),//默认线程工厂Executors.defaultThreadFactory(),//超出任务的拒绝策略new ThreadPoolExecutor.AbortPolicy());//提交十个线程任务,并让他暂时阻塞在哪里for (int i = 0; i < 8; i++) {//判断线程池有没有提交满while (true) {//正在执行的线程数量int activeCount = thread.getActiveCount();//最大线程数int maximumPoolSize = thread.getMaximumPoolSize();//如果线程池没满就提交//提交线程任务if (activeCount < maximumPoolSize) {thread.submit(() -> {System.out.println("线程提交");try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}});break;}}}//关闭线程池thread.shutdown();//线程池关闭后,已提交的线程任务。可以继续执行,但不能提交新任务//可以在确定没有线程任务提交之后关闭/*  thread.submit(()->{System.out.println("55");});*///返回正在执行任务的线程的大概数量。int activeCount = thread.getActiveCount();System.out.println("返回正在执行任务的线程的大概数量:" + activeCount);//返回允许的最大线程数。
/*        int maximumPoolSize = thread.getMaximumPoolSize();System.out.println("返回允许的最大线程数:" + maximumPoolSize);*///如果所有任务在关闭后完成,则返回 true 。/* boolean terminated = thread.isTerminated();System.out.println("如果所有任务在关闭后完成,则返回 true:  " + terminated);*///BlockingQueue<Runnable> queue = thread.getQueue();System.out.println("队列排队的任务个数:" + queue.size());}
}

多线程线程池的基本创建,使用方法相关推荐

  1. 如何关闭线程池?会创建不会关闭?调用关闭方法时线程池里的线程如何反应?

    前言 相信大家在面试的时候经常会遇到「线程池」相关的问题,比如: 什么是线程池?线程池的优点? 有哪几种创建线程池的方式? 四种创建线程池的使用场景? 线程池的底层原理? 线程池相关的参数,比如Cor ...

  2. Java多线程学习六:使用线程池比手动创建线程好在那里以及常用线程池参数的意义

    为什么要使用线程池 首先,回顾线程池的相关知识,在 Java 诞生之初是没有线程池的概念的,而是先有线程,随着线程数的不断增加,人们发现需要一个专门的类来管理它们,于是才诞生了线程池.没有线程池的时候 ...

  3. 线程池原理及创建(C++实现)

    本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...

  4. C++线程池原理及创建(转)

    C++线程池原理及创建(转) 来自http://www.cnblogs.com/cpper-kaixuan/p/3640485.html 本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进 ...

  5. 线程池原理及创建并C++实现

    本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...

  6. C++线程池原理及创建

    本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...

  7. Java多线程 线程池Executor框架

    目录 一.说明 二.理解 Executor ExecutorService Executors 三.实现 1. newSingleThreadExecutor 2. newFixedThreadPoo ...

  8. [线程池][完整实现] 转:线程池原理及创建(C++实现)

    在实际任务中经常会用到多线程,但是没用过线程池,我以前的方法比较暴力:1)创建线程,不断切换任务,保持线程一直运行,直到所有任务结束:2)不断的创建和销毁线程:一般都用1方法.最近和别人聊天,谈到线程 ...

  9. 线程池原理及创建(转)

    本文给出了一个通用的线程池框架,该框架将与线程执行相关的任务进行了高层次的抽象,使之与具体的执行任务无关.另外该线程池具有动态伸缩性,它能根据执行任务的轻重自动调整线程池中线程的数量.文章的最后,我们 ...

最新文章

  1. PHP中阶,PHP进阶
  2. 就想写个爬虫,我到底要学多少东西啊?
  3. python 用递归求质数_编写一个递归函数,它接受和整数,如果它的所有数字都是质数,则返回“True”...
  4. 成功解决ValueError: Dimension 1 in both shapes must be equal, but are 1034 and 1024. Shapes are [100,103
  5. Apple 的CEO 吹响了战斗的号角啦!
  6. 导入安全证书到jdk
  7. 新炬首架梁铭图:从70万字SRE神作提炼出7千字精华与君共勉
  8. html怎么用小小的图片铺满作为背景,多种背景图片随机切换的应用
  9. 主动领域自适应(Active Domain Adaptation)部分经典论文汇总
  10. android项目模块导入eclipse编译报错,android环信demo导入eclipse编译出错
  11. 应急响应前移:从事后到事前
  12. 案例研究:FIT2CLOUD 飞致云携手联友科技助力东风日产云管平台建设
  13. 前端优化之二 图片优化——质量与性能的博弈
  14. 计算机网络和internet选项,详细教你电脑ie的internet选项在哪
  15. 您的Android版本不兼容,android – “你的设备与此版本不兼容”
  16. Java文件的上传和下载
  17. leetcode174.地下城游戏
  18. c++调节控制台字体(c++入门练习)
  19. 读取文件夹下同类型文件的文件名并排序
  20. 【分享一个好看的Android item布局 使用于ListView,RecyleView JAVA版本(二)】

热门文章

  1. 垂直串联六关节机器人调试手册_不止下棋能赢你!新型协作机器人样样精通
  2. html5 php idea,五个HTML5新特性
  3. VxWorks基本OS介绍
  4. 代码补全_AI加持,Kite增加智能代码补全功能:减少一半操作,实时补全
  5. 简单网络聊天程序java_基于Java实现hello/hi简单网络聊天程序
  6. g5420 win7集显驱动_台式机装WIN7?雷我已经趟完了
  7. 制作斜坡单元的两种方法
  8. 利用anaconda prompt打开jupyter notebook
  9. CSS一个元素同时使用多个类选择器(class selector)
  10. 与计算机相关的课外活动,课外活动学生论文,关于应用型院校计算机专业课外活动相关参考文献资料-免费论文范文...