MicroSpaceThreadFactory.java
- package org.microspace.thread;
- import java.util.concurrent.ConcurrentHashMap;
- import java.util.concurrent.ThreadFactory;
- import java.util.concurrent.atomic.AtomicInteger;
- /**
- *
- * @author Gaspar Sinai - {@literal gaspar.sinai@microspace.org}
- * @version 2017-11-04
- */
- public class MicroSpaceThreadFactory implements ThreadFactory {
- final String group;
- final AtomicInteger current;
- final ConcurrentHashMap<String, Thread> threads = new ConcurrentHashMap<>();
-
- public MicroSpaceThreadFactory (String group) {
- this.group = group;
- this.current = new AtomicInteger();
- }
-
- public void shutdown() throws InterruptedException {
- for (Thread t : threads.values()) {
- t.interrupt();
- t.join(10000L);
- }
- threads.clear();
- }
-
- @Override
- public Thread newThread(Runnable r) {
- String threadName = group + "-" + current.incrementAndGet();
- Thread ret = new Thread(r, threadName);
- threads.put(threadName, ret);
- return ret;
- }
-
- public int size () {
- return current.get();
- }
- }