I have written a code in Java, something like this:
....
while (conditionX) {
//fetch m
....
t = new Thread(new SomeRunnable(m));
t.start();
Thread.sleep(500);
}
....
class SomeRunnable implements Runnable {
String msisdn;
public SomeRunnable (String m) {
msisdn = m;
}
@Override
public void run() {
do {
//Statement block S uses msisdn, s开发者_运维技巧ets condition Y
Thread.sleep(30000);
} while (conditionY);
}
}
I am not comfortable with the number Thread.sleep()
s I have used in the code. To avoid this I tried ScheduledExecutor etc, but couldn't really figure out a way to do what I want.
You can implement a TimerTask and override run()
. Then you can schedule the task periodically with:
Timer myTimer = new Timer();
timer.scheduleAtFixedRate(new MyTimerTask(), 500L, 30000L);
When you want to cancel your task, you can do that by calling cancel()
If you are using Spring to configure your beans you can focus just on implementing your business logic and leverage Spring's hooks for managing the tasks, schedules, etc.
http://static.springsource.org/spring/docs/1.2.x/reference/scheduling.html
精彩评论