Java中的线程池 ThreadPoolExecutor
为什么要有线程池?
如果想了解线程池,首先要明白为什么要有线程池这个东西。 多线程是解决并发编程的方案,但是进程有点太重量了(创建和销毁,开销比较大) 因此引入了线程,线程比进程要轻量很对。即便如此,假如在某些场景中,需要频繁创建销毁线程,此时,线程的创建销毁和开销,也就不能忽视了。 为了解决这样的问题:
可以引入协程(在单线程里实现多任务的调度,并在单线程里维护多个任务间的切换)引入线程池
使用线程池的好处
合理的使用线程池能带来3个好处
降低资源消耗,通过重复利用已经创建的线程降低线程创建和销毁造成的消耗提高响应速度,当任务到达时,任务可以不需要等到线程创建就能立即执行提高线程的可管理性,线程是稀缺资源,如果无限制地创建,不仅会消耗资源,还会降低系统稳定性,使用线程池可以统一分配、调优和监控。
如果是真正的创建或者销毁线程那就涉及到用户态和内核态的切换。 如果只是把线程放到线程池,就相当于全在用户
共有 0 条评论