@Documented @Retention(value=RUNTIME) @Target(value=TYPE) public @interface ScheduleWithFixedDelay
For example, you want a method to do something every minute:
@ScheduleWithFixedDelay(delay = 1, unit = TimeUnit.MINUTES) public class Bucket implements Runnable, Closeable { @Override void run() { // do some routine job } @Override void close() { // close operations } }
Execution will be started as soon as you make an instance of the class,
and will be stopped when you call close()
:
Bucket bucket = new Bucket(); // some time later bucket.close();
In order to be executed the class should implement either
Runnable
or Callable
. In order to
be closed and stopped, your the class should implement
Closeable
and its close()
method should be explicitly called
at the moment you want it to stop.
NOTE: It should be pointed out that in order to ensure that there
are no duplicate executions, you can only schedule an execution once between
all equal objects (i.e. instances that are equal as per
Object.equals(Object)
)). Invoking the same method multiple times,
without stopping it first, will result in an IllegalStateException
being thrown.
Modifier and Type | Optional Element and Description |
---|---|
int |
await
How long to wait for the task to finish after shutdown in await units.
|
TimeUnit |
awaitUnit
Time units of await time.
|
int |
delay
Delay, in time units.
|
int |
shutdownAttempts
How many times to do a forceful shutdown after await time.
|
int |
threads
Total number of fixed threads.
|
TimeUnit |
unit
Time units of delay.
|
boolean |
verbose
Be less verbose.
|
public abstract int delay
public abstract TimeUnit unit
public abstract int await
public abstract TimeUnit awaitUnit
public abstract int shutdownAttempts
public abstract int threads
public abstract boolean verbose
Copyright © 2012–2017 jcabi.com. All rights reserved.