KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to use a timer to schedule a recurring event in an application. However, I want to be able to adjust the period at which the event fires in real time (according to the users input). For example: public class HelperTimer extends TimerTask { private Timer timer; //Default of 15 second between updates private int secondsToDelay = 15; public void setPeriod(int seconds) { this.secondsToDelay = seconds; long delay = 1000; // 1 second long period = 1000*secondsToDelay; // seconds if (timer != null) { timer.cancel(); } System.out.println(timer); timer = new Timer(); System.out.println(timer); timer.schedule(this, delay, period); } public int getPeriod() { return this.secondsToDelay; } } I then start a new instance of this class and call its set period function. However, when I do that, I get an Illegal state exception. You can see the System.out.println(timer); in there because I'm checking, and yep sure enough, they are two different timers... so why am I getting an IllegalStateException when I try to run a schedule call on a brand new Timer instance!?!?!?! java.util.Timer@c55e36 java.util.Timer@9664a1 Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException: Task already scheduled or cancelled at java.util.Timer.sched(Unknown Source) at java.util.Timer.schedule(Unknown Source) at HelperTimer.setPeriod(HelperTimer.java:38)
Tags (comma-separated)
Save Edits
Cancel