强迫线程停止执行。
如果安装了安全管理器,则以 this
作为其参数调用 checkaccess
方法。这可能引发 securityexception
(在当前线程中)。
如果该线程不同于当前线程(即当前线程试图终止除它本身以外的某一线程),则安全管理器的 checkpermission
方法(带有 runtimepermission("stopthread")
参数)也会被调用。这会再次抛出 securityexception
(在当前线程中)。
无论该线程在做些什么,它所代表的线程都被迫异常停止,并抛出一个新创建的 threaddeath
对象,作为异常。
停止一个尚未启动的线程是允许的。
如果最后启动了该线程,它会立即终止。
应用程序通常不应试图捕获 threaddeath
,除非它必须执行某些异常的清除操作(注意,抛出 threaddeath
将导致 try
语句的 finally
子句在线程正式终止前执行)。如果 catch
子句捕获了一个 threaddeath
对象,则重新抛出该对象很重要,因为这样该线程才会真正终止。
对其他未捕获的异常作出反应的顶级错误处理程序不会打印输出消息,或者另外通知应用程序未捕获到的异常是否为 threaddeath
的一个实例。
- 抛出:
securityexception
- 如果当前线程不能修改该线程。- 另请参见:
interrupt()
,
checkaccess()
,
run()
,
start()
,
threaddeath
,
threadgroup.uncaughtexception(thread,throwable)
,
securitymanager.checkaccess(thread)
,
securitymanager.checkpermission(java.security.permission)