课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程与进程问题我们在前几期的文章中给大家简单介绍了很多内容了,而本文我们就继续来学习一下,软件开发程序员如何设计一个线程池。
三个步骤
这是一个常见的问题,如果在比较熟悉线程池运作原理的情况下,这个问题并不难。设计实现一个东西,三步走:是什么?为什么?怎么做?
线程池是什么?
线程池使用了池化技术,将线程存储起来放在一个"池子"(容器)里面,来了任务可以用已有的空闲的线程进行处理,处理完成之后,归还到容器,可以复用。如果线程不够,还可以根据规则动态增加,线程多余的时候,亦可以让多余的线程死亡。
为什么要用线程池?
实现线程池有什么好处呢?
降低资源消耗:池化技术可以重复利用已经创建的线程,降低线程创建和销毁的损耗。
提高响应速度:利用已经存在的线程进行处理,少去了创建线程的时间
管理线程可控:线程是稀缺资源,不能无限创建,线程池可以做到统一分配和监控
拓展其他功能:比如定时线程池,可以定时执行任务
需要考虑的点
那线程池设计需要考虑的点:
线程池状态:
有哪些状态?如何维护状态?
线程
线程怎么封装?线程放在哪个池子里?
线程怎么取得任务?
线程有哪些状态?
线程的数量怎么限制?动态变化?自动伸缩?
线程怎么消亡?如何重复利用?
任务
任务少可以直接处理,多的时候,放在哪里?
任务队列满了,怎么办?
用什么队列?
如果从任务的阶段来看,分为以下几个阶段:
如何存任务?
如何取任务?
如何执行任务?
如何拒绝任务?
线程池状态
状态有哪些?如何维护状态?
状态可以设置为以下几种:
RUNNING:运行状态,可以接受任务,也可以处理任务
SHUTDOWN:不可以接受任务,但是可以处理任务
STOP:不可以接受任务,也不可以处理任务,中断当前任务
TIDYING:所有线程停止
TERMINATED:线程池的后状态
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。