java线程池初探

说到java线程池,对我们这些普通的应用开发者来说,可能是既熟悉又陌生,为什么这样讲呢?熟悉是指我们对线程池是耳熟能详,跟人说起总能唠嗑几句;而陌生,是指我们对线程池的设计与实现的陌生,是对java jdk对线程池的实现细节的陌生,所以对于线程池,我们可能停留在能唠嗑几句的层面。

线程池是对象池的一种,也就是我们常说的池化技术的一种具体实现,类似的有数据库的连接池 ,Netty ByteBuf缓冲池等,为什么我们需要池化的技术?说到底,是为了对硬件资源的充分规划和复用,避免内存抖动从而提高资源的利用率和性能,更能保证软件系统的稳定性和可控性。

这些考虑在线程资源的设计上体现得更加明显,我们都知道,线程在java程序中是最重要的资源,可能没有之一,一方面体现在创建线程需要耗费内存,这里包括堆上和虚拟机栈,另一方面体现在线程调度上需要耗费cpu资源,可以说线程是一个重资源的组件,用得不好可能造成系统不可用,最常见错误是造成内存泄漏。所以对线程进行池化是很有必要和迫切的。

那么线程池又该怎么去设计?

首先,我们需要先想清楚线程池的需求是什么,此时需要我们切换成产品经理的思维去想需求,线程池的需求有哪些?以下罗列了一些可能很有必要的需求:

1)线程池需要自动调节和掌控线程的生命周期(包括线程的创建,使用和摧毁)

2)线程池需要控制线程数量的大小(就像国家对人口的规划和控制一般)

3)线程池需要对任务进行管理(包括任务的存储,分配,执行,返回值,丢弃策略等)

4)线程池需要把控自身的生命周期(包括线程池的创建,使用和关闭)

5)线程池需要针对不同应用场景个性化定制(线程池需要不同种类)

针对上诉需求,java jdk又是如何设计的?且听下回分解:

《java线程池数据结构》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值