关于线程池你了解多少?

1.什么是线程池

线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。

2.为什么要用线程池:

1.减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。

2.可以根据系统的承受能力,调整线程池中工作线线程的数目,防止因为消耗过多的内存,而把服务器累趴下(每个线程需要大约1MB内存,线程开的越多,消耗的内存也就越大,最后死机)。

3.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

4.提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

5.提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。

Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。

3.线程池的7个参数

corePoolSize 线程池核心线程大小

maximumPoolSize 线程池最大线程数量

扫描二维码关注公众号,回复: 16858447 查看本文章

keepAliveTime 空闲线程存活时间

unit 空闲线程存活时间单位

workQueue 工作队列

threadFactory 线程工厂

handler 拒绝策略

4.常用的线程池(4种)

  • 定长线程池(FixedThreadPool)

newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待

  • 定时线程池(ScheduledThreadPool )

newScheduledThreadPool 创建一个定时线程池,支持定时及周期性任务执行

  • 可缓存线程池(CachedThreadPool)

newCachedThreadPool 创建一个可缓存的线程池,如果线程池长度超过处理需求,可灵活回收空闲线程,若无可回收,则新建线程。

  • 单线程化线程池(SingleThreadExecutor)

newSingleThreadExecutor 创建一个单线程化的线程池,它只会唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO,LIFO,优先级)执行

猜你喜欢

转载自blog.csdn.net/m0_58823014/article/details/126406885