在Java中,ThreadPoolExecutor是urrent包中的一个类,它提供了一种灵活的方式来创建和管理线程池。以下是如何使用ThreadPoolExecutor的一些基本参数:
1.corePoolSize:核心线程数。即使线程处于空闲状态,也不会被销毁的线程数。
2.maximumPoolSize:线程池的最大线程数。当队列满了之后,如果线程池中的线程数小于这个值,那么会创建新的线程执行任务。
3.keepAliveTime:非核心线程的空闲时间。如果线程池中的线程数量超过corePoolSize,那么这些多余的空闲线程可以在终止前保持存活的最长时间。
4.unit:keepAliveTime的时间单位。
5.workQueue:用于存放待执行的任务的队列。这个队列必须是已实现的阻塞队列。
6.threadFactory:用于创建新线程的工厂。
7.handler:当队列和线程都满了的时候,这个策略会被用来处理新提交的任务。
以下是一个简单的例子:
java复制代码
import urrent.*; | |
public class ThreadPoolExample { | |
public static void main(String[] args) { java线程池创建的四种 | |
// 创建一个固定大小的线程池 | |
ThreadPoolExecutor executor = new ThreadPoolExecutor( | |
5, // corePoolSize | |
10, // maximumPoolSize | |
60L, // keepAliveTime | |
TimeUnit.SECONDS, // unit | |
new LinkedBlockingQueue<Runnable>() // workQueue | |
); | |
// 提交任务到线程池 | |
for (int i = 0; i < 20; i++) { | |
Runnable worker = new Worker("" + i); | |
ute(worker); | |
} | |
executor.shutdown(); // 关闭线程池,不再接受新的任务,等待已提交的任务执行完毕后关闭线程池。 | |
} | |
} | |
在这个例子中,我们创建了一个固定大小为5的线程池,最大线程数为10,非核心线程的空闲时间为60秒,任务队列为LinkedBlockingQueue。然后我们提交了20个任务到线程池中。当所有任务都完成后,我们关闭了线程池。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论