1
2
3
4
5
6
7 package org.mule.module.launcher;
8
9 import java.util.concurrent.ThreadFactory;
10 import java.util.concurrent.atomic.AtomicInteger;
11
12
13
14
15
16
17
18
19 public class ConfigChangeMonitorThreadFactory implements ThreadFactory
20 {
21
22 static final AtomicInteger poolNumber = new AtomicInteger(1);
23 final ThreadGroup group;
24 final AtomicInteger threadNumber = new AtomicInteger(1);
25 final String namePrefix;
26 final String appName;
27
28 public ConfigChangeMonitorThreadFactory(String appName)
29 {
30 this.appName = appName;
31 SecurityManager s = System.getSecurityManager();
32 group = (s != null) ? s.getThreadGroup() :
33 Thread.currentThread().getThreadGroup();
34 namePrefix = String.format("[%s].config.change.%d.thread.", appName, poolNumber.getAndIncrement());
35 }
36
37 public Thread newThread(Runnable r)
38 {
39 Thread t = new Thread(group, r,
40 namePrefix + threadNumber.getAndIncrement(),
41 0);
42 if (t.isDaemon())
43 {
44 t.setDaemon(false);
45 }
46 if (t.getPriority() != Thread.NORM_PRIORITY)
47 {
48 t.setPriority(Thread.NORM_PRIORITY);
49 }
50 return t;
51 }
52
53
54 }