什么是线程池 为什么需要线程池?

为什么出现线程池?(首先说的是思想,然后是具体编程语言对于此的实现)

客户端请求服务器的服务的时候,可能有存在非常多的客户端的请求,这些请求可能大部分都是一个短任务,也就是需要执行的时间比较短;

如果给每个客户端的请求都创建一个线程的话,那么对于服务器的资源的消耗是十分巨大的,容易导致 OOM(创建销毁线程本省是一种费时费力的操作) ,所以想到了指定线程的数量,使得线程进行复用;

新的任务来的时候 ,有空的线程的话,直接只用创建好的线程处理任务即可;
新的任务来了,但是没有线程是空闲的话,排队等待即可;

这样保证了一定的运行效率,减少了没有必要的创建大量的线程,使得,系统更加的稳定;

在不同的编程语言中,都是可以利用上面的线程池思想实现线程池的;
在 Java 中有相关的类可以创建线程池,里面的构造方法可以自定义的创建出来线程;

Java 里面的线程池

Java 可以使用 JUC 工具包下面的 ThreadPoolExecutor 工具类以及 Executors 工具类进行线程池的创建;

在阿里开发手册中推荐使用 ThreadPoolExecutor 里面的构造方法进行线程池的创建,不推荐使用 Executor 里面的相关构造方法创建线程池;

Executors 里面构造线程池是 ThreadPoolExecutor 7 个参数的定制化,限定相关的参数,实现了不同种类的线程池;

posted @ 2022-05-08 12:56  YIMENG-0  阅读(60)  评论(0编辑  收藏  举报