美文网首页
Java多线程学习-3 正常停止一个线程

Java多线程学习-3 正常停止一个线程

作者: 邵增卫 | 来源:发表于2019-05-04 13:56 被阅读0次

前面两节学习了启动一个线程以及线程的主要API,这一节主要介绍如何停止一个线程。

** 强烈建议不要使用线程的stop方法粗鲁的停止线程,因为stop方法会导致很多问题,例如:线程正在执行某个重要的不可中断的原子性操作,会导致数据的不一致;更重要的一点stop方法,可能不会释放mointor锁。

  1. 正常的停止,当一个线程完成逻辑处理之后,自动退出。
  2. 捕获外部传入中断信号(interrupt)信号;
    1. 在逻辑中判断 isInterrupted,来决定线程是否退出
    2. 在逻辑中有可中断的方法,处理InterruptException来终止。
  3. 使用volatile开关控制,这里思考一下我们为什么要使用volatile修饰开关,
public class VolatileSwitch extends Thread{

    private volatile boolean close;
    
    public void run() {
    
        while (!close && !isInterrupted()){
            try {
                TimeUnit.SECONDS.sleep(10);
            } catch (InterruptedException e) {
                System.out.println("interrupted");
            }
        }
    }
    
    public void close(){
        this.close = true;
        interrupt();
    }
}
  1. 异常退出,Thread和Runnable的run方法都不能抛出任何Exception,但是我们可以抛出RunnableException停止线程。

相关文章

  • Java多线程学习-3 正常停止一个线程

    前面两节学习了启动一个线程以及线程的主要API,这一节主要介绍如何停止一个线程。 ** 强烈建议不要使用线程的st...

  • java多线程--Callable

    **移步[java多线程系列文章]Java多线程(二十二)---LockSupport工具Java 停止线程 一、...

  • Java多线程(二)

    Java多线程(二) 上一篇“Java多线程(一)”主要讨论的是线程的创建,本章主要讨论停止线程。 1.概述 停止...

  • Java多线程目录

    Java多线程目录 Java多线程1 线程基础Java多线程2 多个线程之间共享数据Java多线程3 原子性操作类...

  • 5月份第一周学习安排

    学习内容: java多线程及线程同步的方法(使用) java多线程各种同步方法的原理和优缺点 java多线程设计模...

  • Java多线程学习(三)——synchronized(上)

    在前两节的《Java多线程学习(一)——多线程基础》和《Java多线程学习(二)——Thread类的方法介绍》中我...

  • Java多线程编程核心技术(1)

    第一章 java多线程技能 目标: 0、初识线程 1、线程的启动 2、使线程暂停 3、停止线程 4、线程优先级 5...

  • Java多线程编程核心技术

    第1章 Java多线程技能 在Java中有以下3种方法可以终止正在运行的线程:1)使用退出标志,使线程正常退出,也...

  • 带你搞懂Java多线程(五)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四) ...

  • 带你搞懂Java多线程(六)

    带你搞懂Java多线程(一)带你搞懂Java多线程(二)带你搞懂Java多线程(三)带你搞懂Java多线程(四)带...

网友评论

      本文标题:Java多线程学习-3 正常停止一个线程

      本文链接:https://www.haomeiwen.com/subject/eyeznqtx.html