KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > springframework > scheduling > timer > ScheduledTimerTask


1 /*
2  * Copyright 2002-2007 the original author or authors.
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
17 package org.springframework.scheduling.timer;
18
19 import java.util.TimerTask JavaDoc;
20
21 /**
22  * JavaBean that describes a scheduled {@link TimerTask}, consisting of the
23  * {@link TimerTask} itself or a {@link Runnable} to create a {@link TimerTask}
24  * for and a delay plus period. The period needs to be specified; there is
25  * no point in a default for it.
26  *
27  * <p>The JDK's {@link java.util.Timer} facility does not offer sophisticated
28  * scheduling options such as cron expressions. Consider using Quartz for
29  * such advanced needs.
30  *
31  * <p>Note that the {@link java.util.Timer} mechanism uses a {@link TimerTask}
32  * instance that is shared between repeated executions, in contrast to Quartz
33  * which creates a new Job instance for each execution.
34  *
35  * @author Juergen Hoeller
36  * @since 19.02.2004
37  * @see java.util.TimerTask
38  * @see java.util.Timer#schedule(TimerTask, long, long)
39  * @see java.util.Timer#scheduleAtFixedRate(TimerTask, long, long)
40  */

41 public class ScheduledTimerTask {
42
43     private TimerTask JavaDoc timerTask;
44
45     private long delay = 0;
46
47     private long period = -1;
48
49     private boolean fixedRate = false;
50
51
52     /**
53      * Create a new ScheduledTimerTask,
54      * to be populated via bean properties.
55      * @see #setTimerTask
56      * @see #setDelay
57      * @see #setPeriod
58      * @see #setFixedRate
59      */

60     public ScheduledTimerTask() {
61     }
62
63     /**
64      * Create a new ScheduledTimerTask, with default
65      * one-time execution without delay.
66      * @param timerTask the TimerTask to schedule
67      */

68     public ScheduledTimerTask(TimerTask JavaDoc timerTask) {
69         this.timerTask = timerTask;
70     }
71
72     /**
73      * Create a new ScheduledTimerTask, with default
74      * one-time execution with the given delay.
75      * @param timerTask the TimerTask to schedule
76      * @param delay the delay before starting the task for the first time (ms)
77      */

78     public ScheduledTimerTask(TimerTask JavaDoc timerTask, long delay) {
79         this.timerTask = timerTask;
80         this.delay = delay;
81     }
82
83     /**
84      * Create a new ScheduledTimerTask.
85      * @param timerTask the TimerTask to schedule
86      * @param delay the delay before starting the task for the first time (ms)
87      * @param period the period between repeated task executions (ms)
88      * @param fixedRate whether to schedule as fixed-rate execution
89      */

90     public ScheduledTimerTask(TimerTask JavaDoc timerTask, long delay, long period, boolean fixedRate) {
91         this.timerTask = timerTask;
92         this.delay = delay;
93         this.period = period;
94         this.fixedRate = fixedRate;
95     }
96
97     /**
98      * Create a new ScheduledTimerTask, with default
99      * one-time execution without delay.
100      * @param timerTask the Runnable to schedule as TimerTask
101      */

102     public ScheduledTimerTask(Runnable JavaDoc timerTask) {
103         setRunnable(timerTask);
104     }
105
106     /**
107      * Create a new ScheduledTimerTask, with default
108      * one-time execution with the given delay.
109      * @param timerTask the Runnable to schedule as TimerTask
110      * @param delay the delay before starting the task for the first time (ms)
111      */

112     public ScheduledTimerTask(Runnable JavaDoc timerTask, long delay) {
113         setRunnable(timerTask);
114         this.delay = delay;
115     }
116
117     /**
118      * Create a new ScheduledTimerTask.
119      * @param timerTask the Runnable to schedule as TimerTask
120      * @param delay the delay before starting the task for the first time (ms)
121      * @param period the period between repeated task executions (ms)
122      * @param fixedRate whether to schedule as fixed-rate execution
123      */

124     public ScheduledTimerTask(Runnable JavaDoc timerTask, long delay, long period, boolean fixedRate) {
125         setRunnable(timerTask);
126         this.delay = delay;
127         this.period = period;
128         this.fixedRate = fixedRate;
129     }
130
131
132     /**
133      * Set the Runnable to schedule as TimerTask.
134      * @see DelegatingTimerTask
135      */

136     public void setRunnable(Runnable JavaDoc timerTask) {
137         this.timerTask = new DelegatingTimerTask(timerTask);
138     }
139
140     /**
141      * Set the TimerTask to schedule.
142      */

143     public void setTimerTask(TimerTask JavaDoc timerTask) {
144         this.timerTask = timerTask;
145     }
146
147     /**
148      * Return the TimerTask to schedule.
149      */

150     public TimerTask JavaDoc getTimerTask() {
151         return this.timerTask;
152     }
153
154     /**
155      * Set the delay before starting the task for the first time,
156      * in milliseconds. Default is 0, immediately starting the
157      * task after successful scheduling.
158      */

159     public void setDelay(long delay) {
160         this.delay = delay;
161     }
162
163     /**
164      * Return the delay before starting the job for the first time.
165      */

166     public long getDelay() {
167         return this.delay;
168     }
169
170     /**
171      * Set the period between repeated task executions, in milliseconds.
172      * <p>Default is -1, leading to one-time execution. In case of a positive
173      * value, the task will be executed repeatedly, with the given interval
174      * inbetween executions.
175      * <p>Note that the semantics of the period value vary between fixed-rate
176      * and fixed-delay execution.
177      * <p><b>Note:</b> A period of 0 (for example as fixed delay) is <i>not</i>
178      * supported, simply because <code>java.util.Timer</code> itself does not
179      * support it. Hence a value of 0 will be treated as one-time execution;
180      * however, that value should never be specified explicitly in the first place!
181      * @see #setFixedRate
182      * @see #isOneTimeTask()
183      * @see java.util.Timer#schedule(TimerTask, long, long)
184      */

185     public void setPeriod(long period) {
186         this.period = period;
187     }
188
189     /**
190      * Return the period between repeated task executions.
191      */

192     public long getPeriod() {
193         return this.period;
194     }
195
196     /**
197      * Is this task only ever going to execute once?
198      * @return <code>true</code> if this task is only ever going to execute once
199      * @see #getPeriod()
200      */

201     public boolean isOneTimeTask() {
202         return (this.period <= 0);
203     }
204
205     /**
206      * Set whether to schedule as fixed-rate execution, rather than
207      * fixed-delay execution. Default is "false", that is, fixed delay.
208      * <p>See Timer javadoc for details on those execution modes.
209      * @see java.util.Timer#schedule(TimerTask, long, long)
210      * @see java.util.Timer#scheduleAtFixedRate(TimerTask, long, long)
211      */

212     public void setFixedRate(boolean fixedRate) {
213         this.fixedRate = fixedRate;
214     }
215
216     /**
217      * Return whether to schedule as fixed-rate execution.
218      */

219     public boolean isFixedRate() {
220         return this.fixedRate;
221     }
222
223 }
224
Popular Tags