1 package org.apache.commons.jcs.utils.threadpool;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import java.util.concurrent.ThreadFactory;
23
24 /**
25 * Allows us to set the daemon status on the threads.
26 * <p>
27 * @author aaronsm
28 */
29 public class DaemonThreadFactory
30 implements ThreadFactory
31 {
32 private String prefix;
33 private boolean threadIsDaemon = true;
34 private int threadPriority = Thread.NORM_PRIORITY;
35
36 /**
37 * Constructor
38 *
39 * @param prefix thread name prefix
40 */
41 public DaemonThreadFactory(String prefix)
42 {
43 this(prefix, Thread.NORM_PRIORITY);
44 }
45
46 /**
47 * Constructor
48 *
49 * @param prefix thread name prefix
50 * @param threadPriority set thread priority
51 */
52 public DaemonThreadFactory(String prefix, int threadPriority)
53 {
54 this.prefix = prefix;
55 this.threadPriority = threadPriority;
56 }
57
58 /**
59 * Sets the thread to daemon.
60 * <p>
61 * @param runner
62 * @return a daemon thread
63 */
64 @Override
65 public Thread newThread( Runnable runner )
66 {
67 Thread t = new Thread( runner );
68 String oldName = t.getName();
69 t.setName( prefix + oldName );
70 t.setDaemon(threadIsDaemon);
71 t.setPriority(threadPriority);
72 return t;
73 }
74 }