1 package net.sourceforge.pmd.processor; 2 import java.util.Collections; 3 import java.util.LinkedList; 4 import java.util.List; 5 import java.util.concurrent.ThreadFactory; 6 import java.util.concurrent.atomic.AtomicInteger; 7 8 import net.sourceforge.pmd.RuleContext; 9 import net.sourceforge.pmd.RuleSetFactory; 10 11 public class PmdThreadFactory implements ThreadFactory { 12 13 private final RuleSetFactory ruleSetFactory; 14 private final RuleContext ctx; 15 private final AtomicInteger counter = new AtomicInteger(); 16 17 public PmdThreadFactory(RuleSetFactory ruleSetFactory, RuleContext ctx) { 18 this.ruleSetFactory = ruleSetFactory; 19 this.ctx = ctx; 20 } 21 22 public Thread newThread(Runnable r) { 23 Thread t = PmdRunnable.createThread(counter.incrementAndGet(), r, 24 ruleSetFactory, ctx); 25 threadList.add(t); 26 return t; 27 } 28 29 public List<Runnable> threadList = Collections 30 .synchronizedList(new LinkedList<Runnable>()); 31 32 }