专栏首页Java患者线程的终止与复位

线程的终止与复位

线程的终止

通过JDK的文档我们可以找到中断线程的api是interrupt()

并且调用interrupted()方法可以判断当前的状态是否中断.

package com.zero.gaoji.no3.day01;

import java.util.concurrent.TimeUnit;

/**
 * @Description: 中断线程的demo
 * @Author: HuangLeTao
 * @Date: 2020/7/1
 */
public class InterruptDemo {

    private static int i;

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            while (!Thread.currentThread().isInterrupted()) {
                i++;
            }
            System.out.println("i = " + i);
        }, "InterruptDemo");
        t1.start();
        TimeUnit.SECONDS.sleep(1);
        t1.interrupt();
    }
}
i = 255564253

简单了解上面的例子,创建一个线程 启动,睡眠一秒钟后中断该线程, 中断该线程之后, 通过isInterrupted()方法得到该线程的状态为true,这个时候会跳出while循环。

线程的复位

Thread可以通过interrupted()方法对线程进行复位。

package com.zero.gaoji.no3.day01;

import java.sql.Time;
import java.util.concurrent.TimeUnit;

/**
 * @Description: 线程的复位
 * @Author: HuangLeTao
 * @Date: 2020/7/1
 */
public class InterruptedDemo {

    private static int i ;

    public static void main(String[] args) throws InterruptedException {
        Thread t1 = new Thread(() -> {
            while(true) {
                if (Thread.currentThread().isInterrupted()) {
                    System.out.println("复位");
                    Thread.interrupted(); // 复位
                }
            }
        }, "InterruptedDemo");
        t1.start();
        TimeUnit.SECONDS.sleep(1);
        t1.interrupt();

    }

}

本文分享自微信公众号 - Java患者(gh_3a16ffdedb6a),作者:Zero

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python线程的终止方法

    py3study
  • 安全地终止线程

    线程执行完后,将会终止。那么线程除了正常终止外,还有没有别的方式可以终止线程呢?

    黑洞代码
  • JAVA线程异常终止

    参考链接:http://www.cnblogs.com/yuhuihong19941210/p/5547501.html

    java干货
  • Java并发-9.线程的终止

    悠扬前奏
  • C#多线程之旅(7)——终止线程

    悟空聊架构
  • C#多线程之旅(7)——终止线程

    悟空聊架构
  • Python多线程之线程创建和终止

    python主要是通过thread和threading这两个模块来实现多线程支持。python的thread模块是比较底层的模块,python的threadin...

    py3study
  • Java高性能编程实战 - 线程终止

    Stop:中止线程,并且清除监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。 Destroy: JDK未实现该方法

    JavaEdge
  • Android 多线程实现重复启动与停止的服务

    多线程环境下为了避免死锁,一般提倡开放调用,开放调用可以避免死锁,它的代价是失去原子性。但是在有些时候会显得逻辑错误,

    砸漏
  • 如何“优雅”地终止一个线程?

    我们的系统肯定有些线程为了保证业务需要是要常驻后台的,一般它们不会自己终止,需要我们通过手动来终止它们。我们知道启动一个线程是start方法,自然有一个对应的终...

    Java技术栈
  • 终止进程的方法

    kill -9 PID 如果知道进程名称,可以使用killall杀死该名称的所有进程。 killall -9 name

    hankfu
  • JAVA多线程并发之线程实现,4种线程池,终止线程4种方式

    Thread 类本质上是实现了 Runnable 接口的一个实例,代表一个线程的实例。启动线程的唯一方 法就是通过 Thread 类的 start()实例方法。...

    三哥
  • iOS开发中终止线程中正在执行的任务

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

    用户1451823
  • Java线程的暂停与恢复

    用户2965768
  • 一种不会导致资源泄露的“终止”线程的方法

            在项目工程中,我们可能会使用第三方开发的模块。该模块提供一个接口用于完成非常复杂和耗时的工作。我们一般不会将该API放在UI线程中执行,而是启动...

    方亮
  • 这样终止线程,竟然会导致服务宕机?

    或许你已经发现了,上面这段代码使用了 Thread.stop() 来终止线程,在 Java 程序中是不允许这样终止线程的。什么?你问为什么不能这样?

    Java中文社群-磊哥
  • Java实现终止线程池中正在运行的定时任务

    最近项目中遇到了一个新的需求,就是实现一个可以动态添加定时任务的功能。说到这里,有人可能会说简单啊,使用quartz就好了,简单粗暴。然而quartz框架太重了...

    haifeiWu
  • 使用Backstab终止受保护的进程

    Backstab是一款功能强大的安全研究工具,在该工具的帮助下,广大研究人员可以轻松终止那些受反恶意软件产品保护的进程。

    FB客服
  • Python:线程之定位与销毁

    我们有个了不起的后台程序,可以动态加载模块,并以线程方式运行,通过这种形式实现插件的功能。而模块更新时候,后台程序自身不会退出,只会将模块对应的线程关闭、更新代...

    Lin_R

扫码关注云+社区

领取腾讯云代金券