Java 中有几种常见的线程池?
在 Java 中,常见的线程池有以下几种:
首先是 FixedThreadPool(固定线程数线程池)。它的特点是创建一个固定大小的线程池,线程数量在初始化的时候就已经确定。例如,通过 Executors.newFixedThreadPool (int nThreads) 来创建,其中 nThreads 参数指定了线程池中的线程数量。这个线程池会重用固定的线程集合来处理任务队列中的任务。如果所有线程都处于忙碌状态,新任务会在任务队列中等待,直到有线程空闲。它适用于处理负载比较稳定的场景,比如服务器接收固定数量客户端连接的情况,像一个小型的 Web 服务器,它需要同时处理一定数量的 HTTP 请求,使用 FixedThreadPool 可以保证这些请求能够被稳定数量的线程来处理。
然后是 CachedThreadPool(可缓存线程池)。使用 Executors.newCachedThreadPool () 来创建。这种线程池的线程数量是不固定的,它会根据任务的数量动态地创建和回收线程。如果有新任务提交,并且没有空闲线程,就会创建一个新线程来处理任务;如果线程空闲时间超过一定时间(60 秒),就会被回收。它适合于执行很多短期的异步任务的场景。例如,在一个网