
com.groupbyinc.common.util.DefaultThreadFactory Maven / Gradle / Ivy
package com.groupbyinc.common.util;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.atomic.AtomicInteger;
/**
* Created by groupby on 09/07/15.
*/
public class DefaultThreadFactory implements ThreadFactory {
private final AtomicInteger threadNumber = new AtomicInteger(0);
/**
* ThreadFactory that keeps the current thread's name to make logs easier
* to follow and grep
* @return
*/
private ThreadFactory defaultFactory = Executors.defaultThreadFactory();
private String name;
private boolean includeThreadNumber;
public DefaultThreadFactory(String name, boolean includeThreadNumber) {
this.name = name;
this.includeThreadNumber = includeThreadNumber;
}
@Override
public Thread newThread(Runnable r) {
Thread t = defaultFactory.newThread(r);
StringBuilder overrideName = new StringBuilder();
overrideName.append(Thread.currentThread()
.getName());
overrideName.append(":");
overrideName.append(name);
if (includeThreadNumber) {
overrideName.append(":");
overrideName.append(threadNumber.incrementAndGet());
}
t.setName(overrideName.toString());
return t;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy