Java 并发编程之自定义线程池 ThreadPoolExecutor
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相关推荐
- Java并发编程之调度线程池
调度线程池: 调度线程池是线程池类ThreadPoolExecutor的子类,复用了线程池的计算框架,主要用于解决任务在一定的时间间隔后重复执行的问题. 例子 public class Schedul ...
- 【Java进阶】Java并发类库提供的线程池有哪几种? 分别有什么特点?
我在专栏第 17 讲中介绍过线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理,已经是非常成熟的选择. 今天我要问你的问题是,Java 并发 ...
- java并发编程实践(2)线程安全性
[0]README 0.0)本文部分文字描述转自:"java并发编程实战", 旨在学习"java并发编程实践(2)线程安全性" 的相关知识: 0.1)几个术语( ...
- Java并发(五)线程池使用番外-分析RejectedExecutionException异常
Java并发(五)线程池使用番外-分析RejectedExecutionException异常 参考文章: (1)Java并发(五)线程池使用番外-分析RejectedExecutionExcepti ...
- 【JUC并发编程11】线程池
文章目录 线程池 11.1 线程池概述 11.2 线程池架构 11.3 线程池使用方式 11.4 线程池底层原则 11.5 线程池的七个参数 11.6 线程池底层工作流程 11.7 自定义线程池 线程 ...
- Java并发编程—什么是线程?
原文作者:way_more 原文地址:Java 多线程常见基础面试题总结,面试必看! 目录 一.什么是线程和进程? 二.简要描述线程与进程的关系 三.FAQ 一.什么是线程和进程? 1.1. 何为进程 ...
- JAVA 多线程 JAVA 如何开发一个自定义线程池
1.多线程设计介绍 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. ...
- java并发编程第一课 线程的创建、停止和状态变更
开篇词: 由点及面,搭建你的 Java 并发知识网 你好,欢迎学习<Java 并发编程核心 78 讲>,我是讲师星星,一线互联网公司资深研发工程师,参与过集团内多个重点项目的设计与开发. ...
- 并发编程系列之线程池工厂类:Executors
前言 上节讲了讲自定义线程池,今天我们来聊聊线程池框架,在实际开发中我们还是基本使用线程框架Executor给我们提供的一些工具类,Java提供的Executor都在JUC(java.util.con ...
最新文章
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test)
- CentOS 查看系统 CPU 个数、核心数、线程数
- java8新特性之lambda表达式(及方法引用与构造器引用)
- 读《嵌入式系统项目分析入门与实践》⑤
- csadcascascsacsa
- 解析Excel_Poi
- python下载b站视频_python怎么下载b站视频
- php控制步进电机,步进电机的速度控制的原理及方法简介
- windows 空会话 ipc$域控 SYSVOL 和NETLOGON共享
- OpenLayers3 地图图层(Layers) 详解
- VSCode 无法跳转到定义
- 大师们怎么养家糊口过日子
- 苏州IT/互联网交流群
- html5 sha1,JavaScript SHA-256加密算法详细代码
- 实现邮箱验证码发送代码(直接cv,3分钟解决)
- 浏览器端-服务器端-网络、兼容、内核、优化
- oauth0 oauth2_通过OAuth(第1部分)访问社交网站,构建启用OAuth的桌面Twitter客户端
- 尼日利亚4g频段_尼日利亚初创公司Tizeti在全国范围内推出4G LTE网络
- Java-反射性能优化和工具包ReflectASM
- 第六章 80C51单片机内嵌外设及应用
热门文章
- Android WebView:这是一份全面 详细的WebView学习指南
- 2021 年最值得学习的 5 大机器学习编程语言!
- Linux| |对于UDP的学习
- Android开发基础(四大组件及Intent)
- 使用CImage绘制半透明图片
- android 标题栏 fragment,切换Fragment 并更换标题栏
- java平面内有n个矩形_JAVA 相交矩形面积 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点...
- 扫地机器人水箱背景_你真的懂扫地机器人吗?这些不为人知的小细节值得一看...
- mqtt调试助手_腾讯物联网开发平台入门操作,如何使用MQTT协议上传温度湿度数据...
- ros android 方案,ros android_core学习笔记