立即终止Sleep的线程

Posted 小水皮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了立即终止Sleep的线程相关的知识,希望对你有一定的参考价值。

在实际工作中,我们需要每隔几分钟从API取数。

while(isRunning)

{

  work();

  Thread.Sleep(5*60*1000);

}

如果设置isRunning=false,也需要等待几分钟才能终止。

如果调用Thread.Abort()会报异常。

解决方法,将一次Sleep 5分钟,改为分5*60次Sleep一秒钟。然后将isRunning=false即可立即终止线程。

while(isRunning)

{

  work();

  for(int i=0;i<5*60 && isRunning;i++)

  {

    Thread.Sleep(1000);

  }

}

以上是关于立即终止Sleep的线程的主要内容,如果未能解决你的问题,请参考以下文章

立即安全地终止线程 (C#)

如何立即终止套接字 IO 操作上的线程阻塞?

java 线程的终止与线程中断

线程的终止

多线程之interrupt

多线程 wait和sleep区别