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

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -