如何正确停止线程

Posted

tags:

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

有三种方式可以终止线程,具体调用函数依赖于使用的线程系统。1在线程入口函数中,调用return。即退出线程入口函数,可以实现终止当前线程效果;2在线程执行的任意函数,调用当前线程退出函数,可以退出当前线程;3在任意位置,调用线程终止函数,并传入要终止线程的标识符,即pid,可以实现终止对应线程效果。 参考技术A 线程是进程中的执行体。结束线程在程序内部执行完自然会结束。
如果是代码级的停止,一般都有相应的api函数退出线程。自己可以查一下说明文档。
参考技术B 从SUN的官方文档可以得知,调用Thread.stop()方法是不安全的,这是因为当调用Thread.stop()方法时,会发生下面两件事:

1. 即刻抛出ThreadDeath异常,在线程的run()方法内,任何一点都有可能抛出ThreadDeath Error,包括在catch或finally语句中。

2. 释放该线程所持有的所有的锁

当线程抛出ThreadDeath异常时,会导致该线程的run()方法突然返回来达到停止该线程的目的。ThreadDetath异常可以在该线程run()方法的任意一个执行点抛出。但是,线程的stop()方法一经调用线程的run()方法就会即刻返回

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

如何正确停止线程

如何正确停止线程

如何正确暂停/停止线程?

如何正确停止多线程 .NET Windows 服务?

腾讯一面:如何正确停止一个线程?

Java 如何正确停止一个线程