public class ThreadUtils extends Object
| 构造器和说明 |
|---|
ThreadUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static ThreadFactory |
createThreadFactory(String threadNamePrefix)
创建自定义线程名称前缀的
ThreadFactory |
static ExecutorService |
newExecutor()
获得一个新的线程池,默认的策略如下:
1.
|
static ExecutorService |
newExecutor(int corePoolSize)
新建线程池
1.
|
static ThreadPoolExecutor |
newExecutor(int corePoolSize,
int maximumPoolSize)
获得一个新的线程池
如果maximumPoolSize >= corePoolSize,在没有新任务加入的情况下,多出的线程将最多保留60s |
static ExecutorService |
newExecutor(int corePoolSize,
int maximumPoolSize,
int maximumQueueSize)
获得一个新的线程池,并指定最大任务队列大小
如果maximumPoolSize >= corePoolSize,在没有新任务加入的情况下,多出的线程将最多保留60s |
static ExecutorService |
newFixedExecutor(int nThreads,
int maximumQueueSize,
String threadNamePrefix,
boolean isBlocked)
获取一个新的线程池,默认的策略如下
1. |
static ExecutorService |
newFixedExecutor(int nThreads,
int maximumQueueSize,
String threadNamePrefix,
RejectedExecutionHandler handler)
获得一个新的线程池,默认策略如下
1. |
static ExecutorService |
newFixedExecutor(int nThreads,
String threadNamePrefix,
boolean isBlocked)
获取一个新的线程池,默认的策略如下
1. |
static ExecutorService |
newSingleExecutor()
获得一个新的线程池,只有单个线程,策略如下:
1.
|
public static ExecutorService newExecutor(int corePoolSize)
1. 初始线程数为corePoolSize指定的大小
2. 没有最大线程数限制
3. 默认使用LinkedBlockingQueue,默认队列大小为1024
corePoolSize - 同事执行的线程数public static ExecutorService newExecutor()
1. 初始线程数为 0
2. 最大线程数为Integer.MAX_VALUE
3. 使用SynchronousQueue
4. 任务直接提交给线程而不保持它们
public static ExecutorService newSingleExecutor()
1. 初始线程数为 1
2. 最大线程数为 1
3. 默认使用LinkedBlockingQueue,默认队列大小为1024
4. 同时只允许一个线程工作,剩余放入队列等待,等待数超过1024报错
public static ThreadPoolExecutor newExecutor(int corePoolSize, int maximumPoolSize)
corePoolSize - 初始线程池大小maximumPoolSize - 最大线程池大小public static ExecutorService newExecutor(int corePoolSize, int maximumPoolSize, int maximumQueueSize)
corePoolSize - 初始线程池大小maximumPoolSize - 最大线程池大小maximumQueueSize - 最大任务队列大小public static ExecutorService newFixedExecutor(int nThreads, String threadNamePrefix, boolean isBlocked)
1. 核心线程数与最大线程数为nThreads指定的大小
2. 默认使用LinkedBlockingQueue,默认队列大小为1024
3. 如果isBlocked为 true,当执行拒绝策略的时候会处于阻塞状态,直到能添加到队列中或者被Thread.interrupt()中断
nThreads - 线程池大小threadNamePrefix - 线程名称前缀isBlocked - 是否使用BlockPolicy策略public static ExecutorService newFixedExecutor(int nThreads, int maximumQueueSize, String threadNamePrefix, boolean isBlocked)
1. 核心线程数与最大线程数为nThreads指定的大小
2. 默认使用LinkedBlockingQueue
3. 如果isBlocked为 true,当执行拒绝策略的时候会处于阻塞状态,直到能添加到队列中或者被Thread.interrupt()中断
nThreads - 线程池大小maximumQueueSize - 队列大小threadNamePrefix - 线程名称前缀isBlocked - 是否使用BlockPolicy策略public static ExecutorService newFixedExecutor(int nThreads, int maximumQueueSize, String threadNamePrefix, RejectedExecutionHandler handler)
1. 核心线程数与最大线程数为nThreads指定的大小
2. 默认使用LinkedBlockingQueue
nThreads - 线程池大小maximumQueueSize - 队列大小threadNamePrefix - 线程名称前缀handler - 拒绝策略public static ThreadFactory createThreadFactory(String threadNamePrefix)
ThreadFactorythreadNamePrefix - 线程名称前缀ThreadFactoryThreadFactoryBuilder.build()Copyright © 2024. All rights reserved.