【Java 多线程并发】终止线程 4 种方式

1.正常运行结束

程序运行结束,线程自动结束。

2.使用退出标志退出线程

一般 run() 方法执行完,线程就会正常结束。然而,常常有些线程是伺服线程。

伺服线程,不间断地执行,往往在run方法中有一个死循环,监视着某些条件,只有当这些条件满足时才能结束。

使用一个变量来控制循环,例如:最直接的方法就是设一个 boolean 类型的标志,并通过设置这个标志为 true 或 false 来控制 while 循环是否退出,代码示例:

public class ThreadSafe extends Thread {
    public volatile boolean exit = false;
    public void run() {
        while(!exit) {
            // do something
        }
    }
}

定义了一个退出标志 exti ,当 exit 为 true 时,while 循环退出,exit 的默认值为 false。

在定义 exit 时,使用了一个 Java 关键字 volatile,这个关键字的目的是使 exit 同步,也就是说同一时刻只能有一个线程来修改 exit 的值。

3. Interrupt 方法结束线程

使用 interrupt() 方法来中断线程有两种情况:

1.线程处于阻塞状态:如使用了 sleep,同步锁的 wait,socket 中的 receiver,accept 等方法时,会使线程处于阻塞状态。

当调用线程的 interrupt() 方法时,会抛出 Interrupt

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章