How to stop a thread?

前端 未结 4 1746
逝去的感伤
逝去的感伤 2020-11-27 08:15

When a thread is alive, how can I stop the thread? I have given like

if(thread.isAlive()){
    thread.stop();
}

but the method stop is depr

相关标签:
4条回答
  • 2020-11-27 08:43

    In general, you don't forcibly stop threads because it's dangerous. You set a flag that tells the thread in question to exit from it's thread loop under controlled circumstances.

    Your thread loop looks something along these lines:

    void run() {
      while (shouldContinue) {
        doThreadWorkUnit();
      }
    }
    

    And somewhere else you set the shouldContinue variable and wait for the thread to finish:

    ...
    thread.shouldContinue = false;
    thread.join();
    ...
    

    (All this is likely not correct Java, since I don't do Java. View it as pseudo code and modify for your actual language/thread library/etc.)

    0 讨论(0)
  • 2020-11-27 08:43

    Better you have to use this method of thread,to stop it.

    Thread.interrupt();
    

    So that you can also save the state of thread.

    0 讨论(0)
  • 2020-11-27 08:51

    In a non looping thread implmentation, you can always use some thing like this at the very beginning of thread code as:

    void run() {
        if (!shouldContinue) { 
           return 1; 
        } 
        .. 
        then rest of the thread code
        ..
     }
    
    0 讨论(0)
  • 2020-11-27 08:58

    Here's what the Java people have to say about why not to call thread.stop and what to do instead.

    http://download.oracle.com/javase/1.5.0/docs/guide/misc/threadPrimitiveDeprecation.html

    The short answer is, you allow the thread entry point function to return.

    0 讨论(0)
提交回复
热议问题