java线程池**ThreadpoolExecutor**
时间: 2023-08-07 15:06:09 浏览: 115
ThreadpoolExecutor 是 Java 中的一个线程池实现类。它是 ExecutorService 接口的一个具体实现,用于管理和调度线程的执行。
ThreadpoolExecutor 可以通过构造函数来创建,其构造函数包含了一些参数,用于配置线程池的行为。主要的参数包括:
1. corePoolSize:线程池的核心线程数。在没有任务需要执行时,核心线程也会一直保持活动状态。当任务数超过核心线程数时,线程池会创建新的线程来处理任务。
2. maximumPoolSize:线程池的最大线程数。当任务数超过核心线程数且工作队列已满时,线程池会创建新的线程来处理任务,但不会超过最大线程数限制。
3. keepAliveTime:非核心线程的闲置时间。当线程池中的线程数超过核心线程数时,闲置时间超过该值的线程会被销毁,直到线程池中的线程数不超过核心线程数为止。
4. unit:keepAliveTime 的时间单位。
5. workQueue:工作队列,用于存储待执行的任务。可以选择不同的队列实现,如 ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue 等。
6. threadFactory:用于创建新线程的工厂。
7. handler:当线程池和工作队列都满了之后,新任务的处理策略。可以选择不同的策略,如抛出异常、丢弃任务、丢弃队列中最旧的任务等。
通过调用 ThreadpoolExecutor 提供的方法,可以提交任务给线程池执行,例如 execute() 方法用于提交 Runnable 任务,submit() 方法用于提交 Callable 任务,并返回一个 Future 对象,可以用于获取任务执行结果。
线程池的使用可以有效地管理线程资源,提高线程的复用性和执行效率。
阅读全文