1 /**********************************************************************
2 * ThreadService.java
3 * created on 10.08.2006 by netseeker
4 * $Id: ThreadService.java,v 1.2 2006/11/05 16:34:39 netseeker Exp $
5 * $Log: ThreadService.java,v $
6 * Revision 1.2 2006/11/05 16:34:39 netseeker
7 * Code cleanup, added support of JDK 1.5 thread pools
8 *
9 * Revision 1.1 2006/08/10 18:36:04 netseeker
10 * added abstraction of ThreadPools and an Executor based implementation for Java >= 1.5
11 *
12 *
13 * ====================================================================
14 *
15 * Copyright 2005-2006 netseeker aka Michael Manske
16 *
17 * Licensed under the Apache License, Version 2.0 (the "License");
18 * you may not use this file except in compliance with the License.
19 * You may obtain a copy of the License at
20 *
21 * http://www.apache.org/licenses/LICENSE-2.0
22 *
23 * Unless required by applicable law or agreed to in writing, software
24 * distributed under the License is distributed on an "AS IS" BASIS,
25 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26 * See the License for the specific language governing permissions and
27 * limitations under the License.
28 * ====================================================================
29 *
30 * This file is part of the EJOE framework.
31 * For more information on the author, please see
32 * <http://www.manskes.de/>.
33 *
34 *********************************************************************/
35 package de.netseeker.ejoe.concurrent;
36
37 /***
38 * A ThreadService is a wrapper around an implementation of a ThreadPool. It's just a unique, abstract interface for
39 * controlling all kinds of possible ThreadPools, which can be used by EJOE.
40 *
41 * @author netseeker
42 * @since 0.3.9.1
43 */
44 public interface ThreadService
45 {
46
47 /***
48 * Queues a new task for asynchronous execution in the underlying ThreadPool
49 *
50 * @param task a task to execute within one of the available worker threads
51 */
52 public void invokeLater( Runnable task );
53
54 /***
55 * Shutdown the underlying ThreadPool
56 */
57 public void stop();
58
59 /***
60 * Returns the amount of worker threads which are active. Hereby "active" means the worker is currently executing a
61 * task.
62 *
63 * @return the amount of currently active workers in the underlying ThreadPool
64 */
65 public int getActiveWorkerCount();
66
67 /***
68 * Returns the amount of workers which are really usable in the underlying ThreadPool. The amount can differ from
69 * {@link #getExpectedPoolsize()} caused by crashed (or due to too less memory unstarted) worker threads.
70 *
71 * @return the amount of really usable worker threads in the underlying ThreadPool
72 */
73 public int getCurrentPoolsize();
74
75 /***
76 * Returns the amount of workers the ThreadService expects to to have in the underlying ThreadPool according to the
77 * currently active pool size.
78 *
79 * @return the amount of workers which should be started in the underlying ThreadPool
80 */
81 public int getExpectedPoolsize();
82
83 /***
84 * Resizes the amount of worker threads in the ThreadService to the given size.
85 *
86 * @param poolSize the new amount of worker threads in the ThreadService
87 */
88 public void resize( int poolSize );
89 }