如大家所了解的,线程池是一种用于管理和重用多个线程的技术。它包含了一个线程队列和一个任务队列,当一个新的任务需要执行时,线程池中的一个线程会从线程队列中取出,并执行该任务。
当任务执行结束后,该线程不会被销毁,而是继续保留在线程队列中,以便下一次任务需要执行时可以重用。线程池可以有效地减少线程的创建和销毁,提高系统的性能和稳定性。
这里是一个简单的使用线程池的 Java 多线程代码示例:
import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolExample { public static void main(String[] args) { // 创建一个固定大小的线程池,大小为3 ExecutorService executor = Executors.newFixedThreadPool(3); // 提交5个任务给线程池执行 for (int i = 1; i <= 5; i++) { executor.execute(new Task(i)); } // 关闭线程池 executor.shutdown(); } private static class Task implements Runnable { private final int taskId; public Task(int taskId) { this.taskId = taskId; } @Override public void run() { System.out.println("Task #" + taskId + " is running on thread " + Thread.currentThread().getName()); } } }在这个示例中,我们使用 Executors 工厂类创建了一个固定大小为3的线程池。然后,我们提交了 5 个任务给线程池执行,每个任务都是一个实现了 Runnable 接口的内部类。在 run 方法中,我们输出了任务编号和当前运行线程的名称。最后,我们调用线程池的 shutdown 方法关闭线程池。