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 | 0 | static final AtomicInteger poolNumber = new AtomicInteger(1); |
23 | |
final ThreadGroup group; |
24 | 0 | final AtomicInteger threadNumber = new AtomicInteger(1); |
25 | |
final String namePrefix; |
26 | |
final String appName; |
27 | |
|
28 | |
public ConfigChangeMonitorThreadFactory(String appName) |
29 | 0 | { |
30 | 0 | this.appName = appName; |
31 | 0 | SecurityManager s = System.getSecurityManager(); |
32 | 0 | group = (s != null) ? s.getThreadGroup() : |
33 | |
Thread.currentThread().getThreadGroup(); |
34 | 0 | namePrefix = String.format("[%s].config.change.%d.thread.", appName, poolNumber.getAndIncrement()); |
35 | 0 | } |
36 | |
|
37 | |
public Thread newThread(Runnable r) |
38 | |
{ |
39 | 0 | Thread t = new Thread(group, r, |
40 | |
namePrefix + threadNumber.getAndIncrement(), |
41 | |
0); |
42 | 0 | if (t.isDaemon()) |
43 | |
{ |
44 | 0 | t.setDaemon(false); |
45 | |
} |
46 | 0 | if (t.getPriority() != Thread.NORM_PRIORITY) |
47 | |
{ |
48 | 0 | t.setPriority(Thread.NORM_PRIORITY); |
49 | |
} |
50 | 0 | return t; |
51 | |
} |
52 | |
|
53 | |
|
54 | |
} |