多线程设计模式——Thread Pool(线程池)模式

线程池模式解决了在Java中线程资源有限的问题,通过维持一定数量的工作者线程来执行任务,降低了线程创建和销毁的开销,提高了响应性。ThreadPool类负责任务管理和线程生命周期,工作队列用于缓存任务。该模式有工作队列选择、线程池大小调整、线程泄露、线程池饱和策略和死锁等问题需要考虑。
摘要由CSDN通过智能技术生成

这些都是根据我最近看的《Java实战指南多线程编程(设计模式篇)》所得整理。

模式名称

Thread Pool(线程池)模式

模式解决的问题

一个系统中的线程相对与其所要处理的任务而言,总有一种非常有限的资源,线程不仅在其执行任务是需要消耗CPU时间和内存等资源,线程对象本身以及线程所需的调用栈也占用内存,并且Java中创建一个线程往往意味着JVM会创建相应的依赖与宿主机操作系统的本地线程。所以,为每个或者每一批任务创建一个线程以对其进行执行,通常是一种奢侈而不现实的事情。

解决思路

比较常用的做法就是服用一定数量的线程,由这些线程去执行不断产生的任务。
ThreadPool类负责接收和存储任务以及工作者线程的生命管理。submit用于接收一个任务,客户端代码调用该方法想线程池提交一个任务;shutdown关闭线程池对外提供的服务
Promise可借以获取相应任务执行结果的凭据对象。setResule获取相应任务执行结果的执行结果,getResule设置相应任务执行结果的执行结果。
WorkQueue工作队列,实现任务的缓存。enqueue将任务存入队列,dequeue从队列中取出一个任务。
WorkerThread负责任务执行的工作这线程。run逐一从工作队列中取出任务执行,runTask执行制定的任务。

Created with Raphaël 2.1.0 client
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值