文档章节

架构师课程-2-线程池

业余编程人士
 业余编程人士
发布于 2017/07/08 16:04
字数 356
阅读 16
收藏 1

自定义线程池:

public static void main(String[] args) {
		/**
		 * 在使用有界队列时,若有新的任务需要执行,如果线程池实际线程数小于corePoolSize,则优先创建线程,
		 * 若大于corePoolSize,则会将任务加入队列,
		 * 若队列已满,则在总线程数不大于maximumPoolSize的前提下,创建新的线程,
		 * 若线程数大于maximumPoolSize,则执行拒绝策略。或其他自定义方式。
		 * 
		 */	
		ThreadPoolExecutor pool = new ThreadPoolExecutor(
				1, 				//coreSize
				2, 				//MaxSize
				60, 			//60
				TimeUnit.SECONDS, 
				new ArrayBlockingQueue<Runnable>(3)			//指定一种队列 (有界队列)
				//new LinkedBlockingQueue<Runnable>()
				, new MyRejected()
				//, new DiscardOldestPolicy() // 有四种默认的拒绝策略 可以看看
				);
		
		MyTask mt1 = new MyTask(1, "任务1");
		MyTask mt2 = new MyTask(2, "任务2");
		MyTask mt3 = new MyTask(3, "任务3");
		MyTask mt4 = new MyTask(4, "任务4");
		MyTask mt5 = new MyTask(5, "任务5");
		MyTask mt6 = new MyTask(6, "任务6");
		
		pool.execute(mt1);
		pool.execute(mt2);
		pool.execute(mt3);
		pool.execute(mt4);
		pool.execute(mt5);
		pool.execute(mt6);
		
		pool.shutdown();
		
	}

自定义拒绝策略:

使用有界队列才有拒绝策略这件事,有界队列放不下了 所以才拒绝。

一般的自定义拒绝策略是,先记录日志,记录下Task Id,然后在不是高峰期时候再提取日志 从新请求。

public class MyRejected implements RejectedExecutionHandler{

	
	public MyRejected(){
	}
	
	@Override
	public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
		System.out.println("自定义处理..");
		System.out.println("当前被拒绝任务为:" + r.toString());
		

	}

}

 

HttpClient : 一般工作中都是用这个小工具 发起HTTP请求,一般不用HttpUrlConnection

 

 

 

© 著作权归作者所有

业余编程人士
粉丝 5
博文 19
码字总数 9137
作品 0
其他
程序员
私信 提问
加载中

评论(0)

面试:Semaphore(信号量)的成长之路

2019最寒冷,面试跳槽不能等 马上就3月份了,所谓的金三银四招聘季。2019年也许是互联网最冷清的一年,很多知名的大型互联网公司都裁员过冬。当然也有一些公司还在持续招人的,比如阿里就宣称...

尹吉欢
2019/02/25
0
0
Linux多线程并发服务器编程(线程池,FTP服务器)

分享网盘下载:https://pan.baidu.com/s/1gfNCcXt 密码: irfk 内容简介 本课程从最基础的进程、线程概念讲起逐步深入,通过理论与实践结合的方式,使学员快说掌握linux多线程网络编程技术,并...

人气王子333
2018/06/26
0
0
每天都在用Maven?我猜这三题你连一道都答不上来!

  从事开发工作以来,我一直在思考:   为何很多人每天矜矜业业的工作,却难以晋升高级开发工程师?   这或许也是每个 IT人,都思考过的问题。   许多前端工程师总觉得后端工资高,而...

java进阶架构师
2019/11/08
0
0
每天都在用Maven?我猜这三题你连一道都答不上来

  从事开发工作以来,我一直在思考:   为何很多人每天矜矜业业的工作,却难以晋升高级开发工程师?   这或许也是每个 IT人,都思考过的问题。   许多前端工程师总觉得后端工资高,而...

java进阶架构师
2019/11/08
0
0
打通Linux脉络系列:进程、线程和调度-宋宝华-专题视频课程

打通Linux脉络系列:进程、线程和调度—1720人已学习 课程介绍 本课程分成4个组成部分,每次课60分钟,每次课后留下3-4个练习题,可以在Linuxer公众号留言讨论答案和做题心得。 第一部分:深...

21cnbao
2017/09/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

刚哥谈架构 (五) 谈谈数据库架构

无论是构建什么样的应用,大都离不开数据。而在应用的架构设计中,如何设计数据库,使用什么类型的数据库,就是一个架构师必须了解的。所有的数据库的共同点都是以某种方式存储数据,以某种接...

naughty
28分钟前
42
0
明洞明

尼石露🀄️华 🀄️华尼石露 叶果城🀄️华 悟明夫妻国 🀄️国梦🀄️国 国🀄️国世界

悟明夫妻国世界
今天
117
0
OSChina 周一乱弹 —— 妹子,我家的猫发芽了,你要来我家看看吗

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《Gypsophila》- MoreanP 手机党少年们想听歌,请使劲儿戳(这里) @蓝瞳 :愁,明...

小小编辑
今天
103
1
Bochs入门

一、Bochs简介 Bochs(读音同 Box)是完全使用软件模拟PC的开源x86模拟器,与使用虚拟化技术的虚拟机相比,虽然速度慢,但非常适合开发、调试操作系统。 二、配置操作系统 Bochs根据配置文件...

悠悠子佩
今天
57
0
什么是哈希表?

我们在这篇文章将要学习最有用的数据结构之一—哈希表,哈希表的英文叫 Hash Table,也可以称为散列表或者 Hash 表。 哈希表用的是数组支持按照下标随机访问数据的特性,所以哈希表其实就是数...

武培轩
今天
42
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部