1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.waarp.openr66.commander;
21
22 import org.waarp.common.database.data.AbstractDbData;
23 import org.waarp.common.logging.WaarpLogger;
24 import org.waarp.common.logging.WaarpLoggerFactory;
25 import org.waarp.openr66.context.ErrorCode;
26
27 import java.util.concurrent.BlockingQueue;
28 import java.util.concurrent.RejectedExecutionHandler;
29 import java.util.concurrent.ThreadFactory;
30 import java.util.concurrent.ThreadPoolExecutor;
31 import java.util.concurrent.TimeUnit;
32
33
34
35
36 public class ThreadPoolRunnerExecutor extends ThreadPoolExecutor {
37
38
39
40 private static final WaarpLogger logger =
41 WaarpLoggerFactory.getLogger(ThreadPoolRunnerExecutor.class);
42
43
44
45
46 private static class RunnerRejectedExecutionHandler
47 implements RejectedExecutionHandler {
48
49 @Override
50 public final void rejectedExecution(final Runnable arg0,
51 final ThreadPoolExecutor arg1) {
52 if (arg0 instanceof ClientRunner) {
53 final ClientRunner runner = (ClientRunner) arg0;
54 runner.changeUpdatedInfo(AbstractDbData.UpdatedInfo.INERROR,
55 ErrorCode.Unknown, true);
56 } else {
57 logger.warn("Not ClientRunner: {}", arg0.getClass().getName());
58 }
59 }
60
61 }
62
63
64
65
66
67
68
69
70 public ThreadPoolRunnerExecutor(final int corePoolSize,
71 final int maximumPoolSize,
72 final long keepAliveTime, final TimeUnit unit,
73 final BlockingQueue<Runnable> workQueue) {
74 super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
75 setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
76 }
77
78
79
80
81
82
83
84
85
86 public ThreadPoolRunnerExecutor(final int corePoolSize,
87 final int maximumPoolSize,
88 final long keepAliveTime, final TimeUnit unit,
89 final BlockingQueue<Runnable> workQueue,
90 final ThreadFactory threadFactory) {
91 super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
92 threadFactory);
93 setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
94 }
95
96
97
98
99
100
101
102
103
104 public ThreadPoolRunnerExecutor(final int corePoolSize,
105 final int maximumPoolSize,
106 final long keepAliveTime, final TimeUnit unit,
107 final BlockingQueue<Runnable> workQueue,
108 final RejectedExecutionHandler handler) {
109 super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
110 handler);
111 setRejectedExecutionHandler(handler);
112 }
113
114
115
116
117
118
119
120
121
122
123 public ThreadPoolRunnerExecutor(final int corePoolSize,
124 final int maximumPoolSize,
125 final long keepAliveTime, final TimeUnit unit,
126 final BlockingQueue<Runnable> workQueue,
127 final ThreadFactory threadFactory,
128 final RejectedExecutionHandler handler) {
129 super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
130 threadFactory, handler);
131 setRejectedExecutionHandler(handler);
132 }
133
134 }