多线程之 java线程池

135 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第18天,点击查看活动详情

前言

在当下这个科技飞速发展的年代,单核cpu已经不能支持大型业务服务器的运行了,早些年客户对单核的服务器怨声载道,当年的淘宝也是经历那个年代,服务器频繁崩溃,直到近些年12306这个大家广为熟知的一个软件一直崩溃,才让大家越来越重视流量这个东西。

image.png

高流量下业务场景

流量大、并发高、访问人数激增激降低,这些行为常见于用户抢票、访问热点内容、同时大量下单购买同一个物品(秒杀)。这些都在开发中是非常棘手的情况,而解决这些问题的办法1.增加硬件处理能力 2. 使用多线程处理。而我们今天重点讲一下多线程处理这一块。

线程池

线程池的出现是为来了防止恶意使用线程或长时间占用线程导致cpu的频繁开辟内存空间所导致的服务器崩溃,轻则服务失效,重则雪崩效应。所以一味使用线程而不管理线程会引来非常大的麻烦。

而这时java给出的解决方法便是线程池,线程池便从一开始就约定好了空间大小,线程开辟不会超过他的上限,并且有一个极为好用的能力便是可以回收线程,以便给后续的请求使用。这就好比饭店为线程池,而线程是服务员,当服务员服务完一个客人后会归位等待下一个客人,而不会长时间等待已浪费时间。

线程池的好处

  • 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  • 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。
  • 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。