i need help to run my Java program on the server at a specific time like 2 pm (to index the new files).
Someone told me that Java has some thing called jobs but I don't know how to work with that. I tried this:
boolean cond=true;
while(cond){
@SuppressWarnings("deprecation")
int heur = new Date().getHours();
@SuppressWarnings("deprecation")
int minute= new Date().getMinutes();
if(heur==16 && minute==02){
indexer.close();
end = new Date().getTime();
File f;
cond=false;
}
But with this the program is still running.
How could I run my program at a specified time?
There's no
Thread.sleep()
call in the loop, so it will "spin" at 100% CPU (not good), but it's a poor design anyway. A big improvement would be to simply calculate the number of milliseconds between "now" and when you want it to run, then call Thread.sleep(n).However, a better solution is to use what the JDK already provides.
Have a look at this code which uses classes from the JDK concurrent library. This is a very simple example that would work:
Theres a API called Quartz, It's where your program can schedule "Jobs" and it will run it at that time.
Until I can give an example, try this link.
Edit: First you have to create a class that implements org.quartz.Job. When you implement that you will have to implement the method
execute(JobExecutionContext jobExecution)
, which is the method that will run when the "trigger" is fired.To set up the Schedule: