如何停止一个正在运行的线程?

Posted 咔啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何停止一个正在运行的线程?相关的知识,希望对你有一定的参考价值。

使用共享变量的方式

在这种方式中,之所以引入共享变量,是因为该变量可以被多个执行相同任务的

线程用来作为是否中断的信号,通知中断线程的执行。

使用 interrupt 方法终止线程

如果一个线程由于等待某些事件的发生而被阻塞,又该怎样停止该线程呢?这种

情况经常会发生,比如当一个线程由于需要等候键盘输入而被阻塞,或者调用

Thread.join()方法,或者 Thread.sleep()方法,在网络中调用

ServerSocket.accept()方法,或者调用了 DatagramSocket.receive()方法时,都

有可能导致线程阻塞,使线程处于处于不可运行状态时,即使主程序中将该线程

的共享变量设置为 true,但该线程此时根本无法检查循环标志,当然也就无法立

即中断。这里我们给出的建议是,不要使用 stop()方法,而是使用 Thread 提供的

interrupt()方法,因为该方法虽然不会中断一个正在运行的线程,但是它可以使一

个被阻塞的线程抛出一个中断异常,从而使线程提前结束阻塞状态,退出堵塞代

码。

以上是关于如何停止一个正在运行的线程?的主要内容,如果未能解决你的问题,请参考以下文章

腾讯面试官:如何停止一个正在运行的线程?我一脸懵逼……

腾讯面试官:如何停止一个正在运行的线程?我一脸蒙蔽。。。

如何停止一个正在运行的线程?

如何停止一个正在运行的线程?

如何让正在运行的线程暂停一段时间

腾讯面试官:如何停止一个正在运行的线程?我蒙了。。。