Is it possible to call a method in java at specific time? For example of I have a piece of code like this:
class Test{ public static void main(String args[]) { // here i want to call foo at : 2012-07-06 13:05:45 for instance foo(); } }
How this can be done in java?
getTime(); Timer _timer = new Timer(); _timer. schedule(foo, alarmTime); Refer these links: Timer.
The time functions can be accessed from the java. util. Date class. This represents an instance of time with millisecond precision.
Using a java.util.Timer class you can create a timer and schedule it to run at specific time.
Below is the example:
//The task which you want to execute private static class MyTimeTask extends TimerTask { public void run() { //write your code here } } public static void main(String[] args) { //the Date and time at which you want to execute DateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = dateFormatter .parse("2012-07-06 13:05:45"); //Now create the time and schedule it Timer timer = new Timer(); //Use this if you want to execute it once timer.schedule(new MyTimeTask(), date); //Use this if you want to execute it repeatedly //int period = 10000;//10secs //timer.schedule(new MyTimeTask(), date, period ); }
You can use a ScheduledExecutorService, which is "a more versatile replacement for the Timer
/TimerTask
combination" (according to Timer
's javadoc):
long delay = ChronoUnit.MILLIS.between(LocalTime.now(), LocalTime.of(13, 5, 45)); ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); scheduler.schedule(task, delay, TimeUnit.MILLISECONDS);
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With