图解Java多线程设计模式(豆瓣) - 豆瓣读书书上有一个挺好的例子, 可以解释到工厂模式的作用.
Thread是线程类, 而ThreadFactory是Thread的工厂模式版本.
1
2
3
4
5
6
7
8
//Thread版本
new Thread(
new Runnable() {
public void run() {
//具体操作
}
}
).start();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//ThreadFactory版本
public class Demo {
private final ThreadFactory threadFactory;//ThreadFactory是接口
public Host(ThreadFactory threadFactory) {
this.threadFactory = threadFactory;//外部导入
}
public void request(final int count, final char c) {
threadFactory.newThread(// 等同 new Thread(...)
new Runnable() {
public void run() {
//具体操作
}
}
).start();
}
}
因为ThreadFactory是接口, 我们需要通过其实现类, 看看工厂模式干了什么.
1
2
3
4
5
6
7
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
Executors.defaultThreadFactory()//默认工厂
}
}
源码里可见
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
static class DefaultThreadFactory implements ThreadFactory {
//...
DefaultThreadFactory() {
//...
}
//在new Thread(...)前后增加操作
public Thread newThread(Runnable r) {
Thread t = new Thread(group, r,
namePrefix + threadNumber.getAndIncrement(),
0);
//...
return t;
}
}
该工厂类丰富了Thread的生成对象的生命周期 - 创建