1 package org.apache.commons.jcs.utils.threadpool;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 public final class PoolConfiguration
28 implements Cloneable
29 {
30
31 private boolean useBoundary = true;
32
33
34 private int boundarySize = 2000;
35
36
37 private int maximumPoolSize = 150;
38
39
40
41
42
43 private int minimumPoolSize = 4;
44
45
46 private int keepAliveTime = 1000 * 60 * 5;
47
48 public enum WhenBlockedPolicy {
49
50 ABORT,
51
52
53 BLOCK,
54
55
56 RUN,
57
58
59 WAIT,
60
61
62 DISCARDOLDEST
63 }
64
65
66 private WhenBlockedPolicy whenBlockedPolicy = WhenBlockedPolicy.RUN;
67
68
69 private int startUpSize = 4;
70
71
72
73
74 public void setUseBoundary( boolean useBoundary )
75 {
76 this.useBoundary = useBoundary;
77 }
78
79
80
81
82 public boolean isUseBoundary()
83 {
84 return useBoundary;
85 }
86
87
88
89
90 public PoolConfiguration()
91 {
92
93 }
94
95
96
97
98
99
100
101
102
103
104
105
106 public PoolConfiguration( boolean useBoundary, int boundarySize, int maximumPoolSize, int minimumPoolSize,
107 int keepAliveTime, WhenBlockedPolicy whenBlockedPolicy, int startUpSize )
108 {
109 setUseBoundary( useBoundary );
110 setBoundarySize( boundarySize );
111 setMaximumPoolSize( maximumPoolSize );
112 setMinimumPoolSize( minimumPoolSize );
113 setKeepAliveTime( keepAliveTime );
114 setWhenBlockedPolicy( whenBlockedPolicy );
115 setStartUpSize( startUpSize );
116 }
117
118
119
120
121 public void setBoundarySize( int boundarySize )
122 {
123 this.boundarySize = boundarySize;
124 }
125
126
127
128
129 public int getBoundarySize()
130 {
131 return boundarySize;
132 }
133
134
135
136
137 public void setMaximumPoolSize( int maximumPoolSize )
138 {
139 this.maximumPoolSize = maximumPoolSize;
140 }
141
142
143
144
145 public int getMaximumPoolSize()
146 {
147 return maximumPoolSize;
148 }
149
150
151
152
153 public void setMinimumPoolSize( int minimumPoolSize )
154 {
155 this.minimumPoolSize = minimumPoolSize;
156 }
157
158
159
160
161 public int getMinimumPoolSize()
162 {
163 return minimumPoolSize;
164 }
165
166
167
168
169 public void setKeepAliveTime( int keepAliveTime )
170 {
171 this.keepAliveTime = keepAliveTime;
172 }
173
174
175
176
177 public int getKeepAliveTime()
178 {
179 return keepAliveTime;
180 }
181
182
183
184
185 public void setWhenBlockedPolicy( String whenBlockedPolicy )
186 {
187 if ( whenBlockedPolicy != null )
188 {
189 WhenBlockedPolicy policy = WhenBlockedPolicy.valueOf(whenBlockedPolicy.trim().toUpperCase());
190 setWhenBlockedPolicy(policy);
191 }
192 else
193 {
194
195 this.whenBlockedPolicy = WhenBlockedPolicy.RUN;
196 }
197 }
198
199
200
201
202 public void setWhenBlockedPolicy( WhenBlockedPolicy whenBlockedPolicy )
203 {
204 if ( whenBlockedPolicy != null )
205 {
206 this.whenBlockedPolicy = whenBlockedPolicy;
207 }
208 else
209 {
210
211 this.whenBlockedPolicy = WhenBlockedPolicy.RUN;
212 }
213 }
214
215
216
217
218 public WhenBlockedPolicy getWhenBlockedPolicy()
219 {
220 return whenBlockedPolicy;
221 }
222
223
224
225
226 public void setStartUpSize( int startUpSize )
227 {
228 this.startUpSize = startUpSize;
229 }
230
231
232
233
234 public int getStartUpSize()
235 {
236 return startUpSize;
237 }
238
239
240
241
242
243 @Override
244 public String toString()
245 {
246 StringBuilder buf = new StringBuilder();
247 buf.append( "useBoundary = [" + isUseBoundary() + "] " );
248 buf.append( "boundarySize = [" + boundarySize + "] " );
249 buf.append( "maximumPoolSize = [" + maximumPoolSize + "] " );
250 buf.append( "minimumPoolSize = [" + minimumPoolSize + "] " );
251 buf.append( "keepAliveTime = [" + keepAliveTime + "] " );
252 buf.append( "whenBlockedPolicy = [" + getWhenBlockedPolicy() + "] " );
253 buf.append( "startUpSize = [" + startUpSize + "]" );
254 return buf.toString();
255 }
256
257
258
259
260
261
262 @Override
263 public PoolConfiguration clone()
264 {
265 return new PoolConfiguration( isUseBoundary(), boundarySize, maximumPoolSize, minimumPoolSize, keepAliveTime,
266 getWhenBlockedPolicy(), startUpSize );
267 }
268 }