View Javadoc

1   /*
2      Copyright 2008 Ramon Servadei
3   
4      Licensed under the Apache License, Version 2.0 (the "License");
5      you may not use this file except in compliance with the License.
6      You may obtain a copy of the License at
7   
8          http://www.apache.org/licenses/LICENSE-2.0
9   
10     Unless required by applicable law or agreed to in writing, software
11     distributed under the License is distributed on an "AS IS" BASIS,
12     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13     See the License for the specific language governing permissions and
14     limitations under the License.
15   */
16  package fulmine.util.concurrent;
17  
18  import java.util.TimerTask;
19  import java.util.concurrent.Executor;
20  
21  import fulmine.ILifeCycle;
22  
23  /**
24   * An active object that executes tasks asynchronously.
25   * 
26   * @author Ramon Servadei
27   */
28  public interface ITaskExecutor extends Executor, ILifeCycle
29  {
30      /**
31       * Add the task to a queue for processing by a single thread
32       * 
33       * @param task
34       *            the task to add to a queue that is processed by a single
35       *            thread
36       */
37      void execute(Runnable task);
38  
39      /**
40       * Schedule a timer task to be executed by a single worker thread.
41       * 
42       * @param task
43       *            task to be scheduled.
44       * @param delay
45       *            delay in milliseconds before task is to be executed.
46       * @param period
47       *            time in milliseconds between successive task executions.
48       */
49      void schedule(TimerTask task, long delay, long period);
50  
51      /**
52       * Get the current stack of the executor
53       * 
54       * @return the current stack of the executor
55       * @see Thread#getStackTrace()
56       */
57      StackTraceElement[] getStackTrace();
58  }