JAVA终止线程的方法

JAVA终止线程的方法

如何正确地停止一个线程

方法如下:

  1. 使用退出标志,使线程正常退出,也就是当 run 方法完成后线程终止
  2. 使用 interrupt 方法中断线程
  • 退出标志法:

需要 while() 循环在某以特定条件下退出,最直接的办法就是设一个 boolean 标志,并通过设置这个标志来控制循环是否退出:

JAVA终止线程的方法

需要注意的是:isCancelled 需要为 volatile,保证线程读取时 isCancelled 是最新数据

  • interrupt法终止:

如果线程是阻塞的,则不能使用退出标志法来终止线程。这时就只能使用 Java 提供的中断机制:

  • void interrupt()

如果线程处于被阻塞状态,那么线程将立即退出被阻塞状态,并抛出一个 InterruptedException 异常

如果线程处于正常活动状态,那么该线程的中断标志为 true。

  • static boolean interrupted()

测试当前线程是否被中断。这一调用会将当前线程的中断状态重置为 false

  • boolean isInterrupted()

测试线程是否被终止。不像静态的中断方法,这一调用不改变线程的中断状态

终止 实例代码

JAVA终止线程的方法

以上代码运行输出结果为:

JAVA终止线程的方法


分享到:


相關文章: