1)定义一个任务线程

public class Task implements Runnable {private String name;Task(String name) {this.name = name;}@Overridepublic void run() {System.out.println(Thread.currentThread().getName() + " Start." + name);try {TimeUnit.SECONDS.sleep(5);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + " End.");}@Overridepublic String toString() {return this.name;}
}

2)拒绝策略

public class CustomizedRejectedExecutionHandler implements RejectedExecutionHandler {@Overridepublic void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {System.out.println(r.toString() + " is rejected!");}
}

3)自定义线程池

public class ThreadPool {public static void main(String[] args) {CustomizedRejectedExecutionHandler rejectedExecutionHandler = new CustomizedRejectedExecutionHandler();ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(// 核心线程数3// 最大线程数,6// 生存时间,10// 生产时间单位,TimeUnit.SECONDS// 任务队列,最多容纳线程个数,new ArrayBlockingQueue<Runnable>(4)// 线程工厂, Executors.defaultThreadFactory()// 拒绝策略,线程池装满并且队列也装满的情况下,任务线程会被如何处理, rejectedExecutionHandler);for (int i=0; i<10; i++) {Task task = new Task(i + "");threadPoolExecutor.execute(task);}try {Thread.sleep(30000);} catch (InterruptedException e) {e.printStackTrace();}//shut down the poolthreadPoolExecutor.shutdown();}
}

Java 并发编程之自定义线程池 ThreadPoolExecutor相关推荐

  1. Java并发编程之调度线程池

    调度线程池: 调度线程池是线程池类ThreadPoolExecutor的子类,复用了线程池的计算框架,主要用于解决任务在一定的时间间隔后重复执行的问题. 例子 public class Schedul ...

  2. 【Java进阶】Java并发类库提供的线程池有哪几种? 分别有什么特点?

    我在专栏第 17 讲中介绍过线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理,已经是非常成熟的选择. 今天我要问你的问题是,Java 并发 ...

  3. java并发编程实践(2)线程安全性

    [0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...

  4. Java并发(五)线程池使用番外-分析RejectedExecutionException异常

    Java并发(五)线程池使用番外-分析RejectedExecutionException异常 参考文章: (1)Java并发(五)线程池使用番外-分析RejectedExecutionExcepti ...

  5. 【JUC并发编程11】线程池

    文章目录 线程池 11.1 线程池概述 11.2 线程池架构 11.3 线程池使用方式 11.4 线程池底层原则 11.5 线程池的七个参数 11.6 线程池底层工作流程 11.7 自定义线程池 线程 ...

  6. Java并发编程—什么是线程?

    原文作者:way_more 原文地址:Java 多线程常见基础面试题总结,面试必看! 目录 一.什么是线程和进程? 二.简要描述线程与进程的关系 三.FAQ 一.什么是线程和进程? 1.1. 何为进程 ...

  7. JAVA 多线程 JAVA 如何开发一个自定义线程池

    1.多线程设计介绍 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. ...

  8. java并发编程第一课 线程的创建、停止和状态变更

    开篇词: 由点及面,搭建你的 Java 并发知识网 你好,欢迎学习<Java 并发编程核心 78 讲>,我是讲师星星,一线互联网公司资深研发工程师,参与过集团内多个重点项目的设计与开发. ...

  9. 并发编程系列之线程池工厂类:Executors

    前言 上节讲了讲自定义线程池,今天我们来聊聊线程池框架,在实际开发中我们还是基本使用线程框架Executor给我们提供的一些工具类,Java提供的Executor都在JUC(java.util.con ...

最新文章

  1. Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test)
  2. CentOS 查看系统 CPU 个数、核心数、线程数
  3. java8新特性之lambda表达式(及方法引用与构造器引用)
  4. 读《嵌入式系统项目分析入门与实践》⑤
  5. csadcascascsacsa
  6. 解析Excel_Poi
  7. python下载b站视频_python怎么下载b站视频
  8. php控制步进电机,步进电机的速度控制的原理及方法简介
  9. windows 空会话 ipc$域控 SYSVOL 和NETLOGON共享
  10. OpenLayers3 地图图层(Layers) 详解
  11. VSCode 无法跳转到定义
  12. 大师们怎么养家糊口过日子
  13. 苏州IT/互联网交流群
  14. html5 sha1,JavaScript SHA-256加密算法详细代码
  15. 实现邮箱验证码发送代码(直接cv,3分钟解决)
  16. 浏览器端-服务器端-网络、兼容、内核、优化
  17. oauth0 oauth2_通过OAuth(第1部分)访问社交网站,构建启用OAuth的桌面Twitter客户端
  18. 尼日利亚4g频段_尼日利亚初创公司Tizeti在全国范围内推出4G LTE网络
  19. Java-反射性能优化和工具包ReflectASM
  20. 第六章 80C51单片机内嵌外设及应用

热门文章

  1. Android WebView:这是一份全面 详细的WebView学习指南
  2. 2021 年最值得学习的 5 大机器学习编程语言!
  3. Linux| |对于UDP的学习
  4. Android开发基础(四大组件及Intent)
  5. 使用CImage绘制半透明图片
  6. android 标题栏 fragment,切换Fragment 并更换标题栏
  7. java平面内有n个矩形_JAVA 相交矩形面积  平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点...
  8. 扫地机器人水箱背景_你真的懂扫地机器人吗?这些不为人知的小细节值得一看...
  9. mqtt调试助手_腾讯物联网开发平台入门操作,如何使用MQTT协议上传温度湿度数据...
  10. ros android 方案,ros android_core学习笔记