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 }