Sud*_*han 33 java multithreading executorservice threadpool
我有一个使用Executor框架的Java应用程序,我有这样的代码
protected ScheduledExecutorService scheduledExecutorService = new ScheduledThreadPoolExecutor(5)
我的理解是,JVM内部将创建一个包含5个线程的池.现在,当我在一个分析器中检查执行时,我会得到类似的东西thread-pool2,thread-pool3等等.
Some of these thread pools are created by the server and some are created by me,我需要一种方法来区分由我创建的和由服务器创建的.
我想如果我可以命名线程池它应该做的伎俩,但是没有看到任何API允许我这样做.
提前致谢.
Pet*_*aný 47
您可以将自己的ThreadFactory传递给ScheduledThreadPoolExecutor.你的ThreadFactory将创建线程,并可以给它任何你想要的名称.您的ThreadFactory也可以重用Executors.defaultThreadFactory(),并且只在返回线程之前更改名称.
Kar*_*ról 10
public class NamedThreadPoolExecutor extends ThreadPoolExecutor {
private static final String THREAD_NAME_PATTERN = "%s-%d";
public NamedThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, final TimeUnit unit,
final String namePrefix) {
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, new LinkedBlockingQueue<>(),
new ThreadFactory() {
private final AtomicInteger counter = new AtomicInteger();
@Override
public Thread newThread(Runnable r) {
final String threadName = String.format(THREAD_NAME_PATTERN, namePrefix, counter.incrementAndGet());
return new Thread(r, threadName);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25680 次 |
| 最近记录: |