🔎优点1(降低资源消耗)
有了线程池后,创建线程不再是向系统申请,而是从线程池中拿
当线程不再使用后,再还给线程池
线程的创建,虽然相较于进程是轻量的,但是如果进行频繁的创建,那么开销也是不可忽略的
🔎优点2(提高响应速度)
直接从线程池中获取线程要比从系统创建线程更高效
那么为什么从线程池获取就会比在系统中创建要高效呢?
因为从线程池中获取属于用户态操作
而从系统中创建涉及到用户态和内核态之间的切换,但真正的创建是在内核态完成的
举个栗子🥝
一个操作系统 = 内核 + 应用程序
内核相较于应用程序较少
我们可以将内核想象成银行的工作人员,将应用程序想象成办理业务的人
一个内核(银行工作人员)对应多个应用程序(办理业务的人)
如果我们去办理业务,需要用到身份证复印件,此时我们恰好没带复印件,只带了身份证
那么有2种选择:
选择(1):将身份证交给工作人员,让工作人员去打印复印件
选择(2):自己拿着身份证去大厅打印身份证
如果是用户自己去拿着身份证复印,那他复印完很快就回来了(用户态)
纯用户态操作,时间是可控的
但是交给工作人员去复印,就需要进行等待(内核态)
因为工作人员有可能在复印身份证时,顺便上了个厕所,顺便接了杯水,顺便…
内核态操作,时间不可控
通过上面这个栗子,相信大家就明白了为什么直接从线程池中获取线程要比从系统创建线程更高效
🔎优点3(可管理性)
通过统一的分配,监控,避免大量的线程间因互相抢占资源导致的阻塞现象
🔎结尾
创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油