2020-03-17 22:23:15 +00:00
|
|
|
package com.terraforged.core.util.concurrent;
|
|
|
|
|
|
|
|
import java.util.concurrent.ThreadFactory;
|
|
|
|
import java.util.concurrent.atomic.AtomicInteger;
|
|
|
|
|
|
|
|
// As DefaultThreadPool but with custom thread names
|
2020-03-18 18:12:50 +00:00
|
|
|
public class WorkerFactory implements ThreadFactory {
|
2020-03-17 22:23:15 +00:00
|
|
|
|
2020-03-18 18:12:50 +00:00
|
|
|
private final String prefix;
|
2020-03-17 22:23:15 +00:00
|
|
|
private final ThreadGroup group;
|
|
|
|
private final AtomicInteger threadNumber = new AtomicInteger(1);
|
|
|
|
|
2020-03-18 18:12:50 +00:00
|
|
|
public WorkerFactory(String name) {
|
2020-03-17 22:23:15 +00:00
|
|
|
group = Thread.currentThread().getThreadGroup();
|
2020-03-18 18:12:50 +00:00
|
|
|
prefix = name + "-Worker-";
|
2020-03-17 22:23:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public Thread newThread(Runnable task) {
|
|
|
|
Thread thread = new Thread(group, task);
|
|
|
|
thread.setDaemon(true);
|
2020-03-18 18:12:50 +00:00
|
|
|
thread.setName(prefix + threadNumber.getAndIncrement());
|
2020-03-17 22:23:15 +00:00
|
|
|
return thread;
|
|
|
|
}
|
|
|
|
}
|