关于java线程池的学习

java线程池的分类以及各自优缺点

线程池的用处

   服务器端处理客户端请求的方式有哪些?1.如果一个请求过来,那么直接给它分配一个新的Thread处理它的请求,2.单线程进行处理
    对比上面两种方式,我们会发现两种方式都是不靠谱的。对于第一种方式,如果并发量很高的情况很容易将服务器压垮,另外线程过多,受限于cpu核数的限制,会导致大量的线程切换。2.会导致请求处理过慢。
    我们能够想到的解决方案有哪些?定义线程数组,然后线程处理完请求后,不回收线程,这样就会节省了很多时间。
    自己开发线程池需要考虑的问题太多,例如死锁、内存泄漏等问题,幸好jdk已经帮我们实现了一些基础的线程池,已经足够我们实现我们的基本功能。

线程池的分类

    

  1. newFixedThreadPool:定义一个长度恒定的线程池,线程的数量是恒定的,即使没有任务提交,也不会回收线程。这样的好处就是缩减了新建线程和回收线程所需要的时间,缺点就是如果长时间没有任务,还是会有线程在内存中。
  2. newCachedThreadPool:定义一个可以可以缓存的线程池,并且可以动态扩展,当新的任务提交的时候,如果没有空闲的线程,那么就创建新的线程执行它。如果没有任务提交的话,空闲的线程就会被回收回收。
  3. newSingleThreadExecutor:只有一个执行线程的线程池,如果该线程挂掉了,那么会有一个新的线程替代它。优点是可以保证任务的顺序执行,缺点是太慢。
  4. newScheduleThreadPool:长度恒定的带有定时任务的线程池,允许定时任务的提交以及重复任务的提交。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值