java - Why we use a flag to stop a thread? -


when tried figure out how stop thread in program multiple threads,
suggested call method sets flag tell thread stop doing real works,like this:

public class threadtobeterminated implements runnable {      private static final logger logger = loggerfactory.getlogger(indexprocessor.class);     private volatile boolean running = true;      public void terminate() {         running = false;     }      @override     public void run() {         while (running) {             try {                 logger.debug("doing real work ,like counting...");                 for(int i=0;i<100;i++){}              } catch (interruptedexception e) {                 logger.error("exception", e);                 running = false;             }         }      } } 

when want stop tread ,i'll call threadinstance.terminate();.

don't need literally stop thread ?

why should leave thread useless work (method run called ,test flag running==false return)? mean :this waste of time ,isn't it?

when execution scope goes beyond run() method, thread stops, moment while loop broken, thread stop.

this allow clean if situation requires it:

public void run() {     while (running) {         try {             logger.debug("doing real work ,like counting...");             for(int i=0;i<100;i++){}          } catch (interruptedexception e) {             logger.error("exception", e);             running = false;         }                }     //clean } 

the above approach allows control on how thread stops and happens after opposed potentially kill it, cause kinds of problems.


Comments

Popular posts from this blog

How to run C# code using mono without Xamarin in Android? -

c# - SharpSsh Command Execution -

python - Specify path of savefig with pylab or matplotlib -