java - How to stop a running TimerTask -
i trying make simple timer plays beep after specified number of seconds. managed work, timertask continues run after beep. stop execution? here code:
import java.util.scanner; import java.util.timer; import java.util.timertask; import java.awt.toolkit; class alarm { public static void main(string[] args) { long delay; scanner scan = new scanner(system.in); system.out.print("enter delay in seconds: "); delay = scan.nextint()*1000; timer timer = new timer(); timertask task = new timertask() { @override public void run() { toolkit.getdefaulttoolkit().beep(); } }; timer.schedule(task, delay); } }
you need cancel timer calling following methods
timer.cancel(); // terminates timer, discarding scheduled tasks. timer.purge(); // removes cancelled tasks timer's task queue. this cancel task, work:
import java.util.scanner; import java.util.timer; import java.util.timertask; import java.awt.toolkit; class alarm { private static boolean run = true; public static void main(string[] args) { long delay; scanner scan = new scanner(system.in); system.out.print("enter delay in seconds: "); delay = scan.nextint()*1000; final timer timer = new timer(); final timertask task = new timertask() { @override public void run() { if(run) { toolkit.getdefaulttoolkit().beep(); } else { timer.cancel(); timer.purge(); } } }; timer.schedule(task, delay); // set run false here stop timer. run = false; } }
Comments
Post a Comment