
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
掌握更多的编程开发技术能够让Java程序员满足不同的编程开发需求,而线程池就是软件开发项目中经常用到的一个编程技术,下面我们就通过案例分析来简单了解一下,线程池技术应用原因分析。
1、线程池原理
用户提交任务到程序执行完成,大致的过程如上图,提交一个task,然后有个线程去执行。
所以要提高程序执行的效率可以从两个方面来考虑
异步,先响应,返回中间结果,然后异步处理,将结果返回
并发,多个线程来执行。
2、生产者消费者模式
有一定工作经验的朋友对消息队列的削峰填谷,系统解耦肯定不陌生。那么线程池,算不算削峰填谷呢?
异步化后,相当于把所有的task放在了队列中。也就是生产者->容器->消费者。
线程池技术使系统复杂了,也提供了更多的灵活性。通过队列的形式,我们将任务的执行拆分成了生产者,消费者模式。每一步只用关心自己的事情。如果我们的任务很复杂,我们可以将任务拆分成不同的步骤,每一步骤可以使用不同的线程池来解决,以此来提高效率。
3、可管理性
看上去通过线程池完美解决了我们的问题,那么需要付出什么代价呢?cpu的资源是有限的,线程的创建也需要代价,我们一个java应用进程的资源是毕竟是有限的。我们不可能在应用中无限的创建线程池。所以我们需要管理线程池。
通常,对于简单的应用,我们使用一个单例线程池即可,让应用中的所有task都使用同一个线程池,防止一些初级程序员在应用中随意创建线程池,导致线程资源吃紧,线程占用过多的资源。
当应用中task比较复杂的时候,我们就需要使用分治的思想,对线程池进行隔离。
比如有些是cpu密集型的,有些是IO密集型的;任务的重要程度也有轻重之分;任务的执行时间也有不同。我们需要对为这些任务建立不同的线程池,以此来提高效率。
4、总结
线程池是一种异步化技术,通过预先创建线程/异步处理来提高响应速度。同时通过统一调配线程资源,可以降低线程的重复创建问题,提高线程的利用率,中心化管理有利于对资源的有效控制,防止滥用。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei0707学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。