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

2021-02-08 12:18

阅读:356

标签:情况   通知   ali   mil   主程   ott   导致   线程   int   

使用共享变量的方式 

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

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

使用 interrupt 方法终止线程 

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

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

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

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

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

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

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

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

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

码。

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

标签:情况   通知   ali   mil   主程   ott   导致   线程   int   

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


评论


亲,登录后才可以留言!