Skip to content

Commit 5e0161f

Browse files
自定义线程池的ThreadFactory
1 parent c81a4fe commit 5e0161f

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.concurrent.threadpool;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
7+
import java.util.concurrent.ThreadFactory;
8+
import java.util.concurrent.atomic.AtomicInteger;
9+
10+
11+
/**
12+
* 带有前缀名称的线程工厂
13+
*
14+
* 创建线程或线程池时请指定有意义的线程名称,方便出错时回溯。
15+
*/
16+
@Data
17+
@Builder
18+
@AllArgsConstructor
19+
public class ThreadFactoryImpl implements ThreadFactory {
20+
21+
/**
22+
* 线程名前缀
23+
*/
24+
private final String threadName;
25+
26+
/**
27+
* 生成线程编号。AtomicInteger 实现了原子性,保证了高并发下的线程安全
28+
*/
29+
private final AtomicInteger threadNumber = new AtomicInteger(1);
30+
31+
32+
@Override
33+
public Thread newThread(Runnable r) {
34+
return new Thread(r, threadName + threadNumber.getAndIncrement());
35+
}
36+
37+
}
38+
39+

0 commit comments

Comments
 (0)