码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2020-06-21 13:45:51      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:运行   无法   str   事件   需要   程序   执行   thread   ali   

使用共享变量的方式

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

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

使用 interrupt 方法终止线程

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

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

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

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

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

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

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

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

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

码。

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

标签:运行   无法   str   事件   需要   程序   执行   thread   ali   

原文地址:https://www.cnblogs.com/programb/p/13020286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!