newFixedThreadPool定义
newFixedThreadPool是Java中的一个线程池,它允许开发人员创建一个指定数量的线程池,并在需要时重用这些线程。
newFixedThreadPool作用
newFixedThreadPool的作用是创建一个固定大小的线程池,该线程池中的线程数量是固定的,适用于需要大量短期异步任务的情况。
newFixedThreadPool使用示例
下面是一个使用newFixedThreadPool创建线程池的示例:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Example { public static void main(String[] args) { // 创建一个大小为10的线程池 ExecutorService executor = Executors.newFixedThreadPool(10); // 提交任务 for (int i = 0; i < 100; i++) { executor.submit(new Task(i)); } // 关闭线程池 executor.shutdown(); } static class Task implements Runnable { private int taskId; public Task(int taskId) { this.taskId = taskId; } @Override public void run() { System.out.println("Task " + taskId + " is running."); } } }
该示例中,首先使用Executors.newFixedThreadPool(10)创建了一个大小为10的线程池,然后通过for循环提交了100个任务,每个任务都是一个Task对象,最后使用executor.shutdown()方法关闭线程池。
newFixedThreadPool工作原理
newFixedThreadPool是一种固定大小的线程池,它的工作原理如下:
1.创建固定数量的线程
在使用newFixedThreadPool创建线程池时,会同时创建固定数量的线程,这些线程会一直存在于线程池中,并等待被分配任务。
2.等待任务分配
一旦有任务提交到线程池中,线程池就会将任务分配给其中一个空闲线程执行。如果当前所有线程都在执行任务,那么新的任务就会被放置在队列中等待,直到有线程可用时再被执行。
3.处理任务
一旦线程获取到任务,就会开始执行任务的run()方法,这个过程是异步的,也就是说主线程不会阻塞等待任务完成。
4.重用线程
当一个任务完成后,线程不会被销毁,而是被重新放回线程池中等待下一个任务的分配。这种方式可以避免频繁地创建和销毁线程,提高了应用程序的效率和性能。
5.关闭线程池
当不再需要使用线程池时,可以调用线程池的shutdown()方法来关闭线程池。线程池会停止接受新的任务,并等待当前正在执行的任务完成后关闭线程池中的所有线程。
以上就是newFixedThreadPool的详解,更多Java线程池,请查看:
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》