Java多线程编程之开个工厂造线程
作者: 西魏陶渊明 博客: https://blog.springlearn.cn/
西魏陶渊明 莫笑少年江湖梦,谁不少年梦江湖
线程工厂
线程是Java里面很重要的一个概念,具体体现就是Thread这个类。我们平时最常用的创建线程就是在用Executors来创建线程池。在前面的章节 也可以看到,创建线程池时候有一个入参就是线程工厂,ThreadFactory这个类。那么这个类具体有什么用呢? 其实就是为了统一在创建线程时设置一些参数, 如是否守护线程。线程一些特性等,如优先级,名称。
/**
* @param threadFactory 线程工厂
*/
public ThreadPoolExecutor(int corePoolSize,
int maximumPoolSize,
long keepAliveTime,
TimeUnit unit,
BlockingQueue
ThreadFactory threadFactory) {
this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
threadFactory, defaultHandler);
}
自定义
所谓线程工厂其实就是创建线程使用的。正常情况下我们创建线程是下面这样的。
Thread ret = new Thread(runnable);
但是线程的构造其实并不是只有一个,它有一个线程组的概念,另外也可以给每个线程去设置一个名字。这样的目的是可以通过名字就能辨认是什么线程在执行。
那么我们就看下这里面怎么实现的,其实非常简单。
public class NamedThreadFactory implements ThreadFactory {
protected static final AtomicInteger POOL_SEQ = new AtomicInteger(1);
protected final AtomicInteger mThreadNum = new AtomicInteger(1);
protected final String mPrefix;
protected final boolean mDaemon;
protected final ThreadGroup mGroup;
public NamedThreadFactory() {
this("pool-" + POOL_SEQ.getAndIncrement(), false);
}
public NamedThreadFactory(String prefix) {
this(prefix, false);
}
public NamedThreadFactory(String prefix, boolean daemon) {
mPrefix = prefix + "-thread-";
mDaemon = daemon;
SecurityManager s = System.getSecurityManager();
mGroup = (s == null) ? Thread.currentThread().getThreadGroup() : s.getThreadGroup();
}
@Override
public Thread newThread(Runnable runnable) {
//就是给线程创建了一个名字和指定了一个线程组
String name = mPrefix + mThreadNum.getAndIncrement();
Thread ret = new Thread(mGroup, runnable, name, 0);
ret.setDaemon(mDaemon);
return ret;
}
public ThreadGroup getThreadGroup() {
return mGroup;
}
}
如此而已,线程工厂就是这样。
文章来源: springlearn.blog.csdn.net,作者:西魏陶渊明,版权归原作者所有,如需转载,请联系作者。
原文链接:springlearn.blog.csdn.net/article/details/125824237
随便看看
- 2025-07-16 14:30:28荒岛求生攻略抓鱼,在荒岛上如何获取食物?一位游戏高手分享抓鱼心得
- 2025-06-08 07:28:48丱女的意思
- 2025-10-04 11:55:04其实,一个人,想要活得轻松一点,不妨多做这三件事
- 2025-05-03 11:10:11“苹果智能”将如何改造Siri?
- 2025-05-15 18:26:59超简单!原来只需2分钟,就可以办理国际驾照认证件!
- 2025-06-06 15:43:36快手拍57秒功能在哪 怎么拍摄长视频,快手如何拍摄五分钟视频
- 2025-12-21 11:26:59血牌攻略
- 2025-08-21 11:12:53为新派重型而生的高颜值硬货:Ibanez RGD系列
- 2025-09-22 05:37:09琰字五行属什么
- 2025-05-20 03:59:00仙剑世界:林月如培养攻略:技能升级/套装词条/宿缘/御灵/阵容全方位指南
