首页 > 其他分享 >守护线程和中断线程

守护线程和中断线程

时间:2024-08-23 15:51:53浏览次数:14  
标签:ziLong 中断 void 线程 WuJiang new public 守护

守护线程

	java中所有的线程分为两类, 一类是守护线程, 一类是非守护线程(又称为用户线程)。
当java中所有的用户线程结束后, 无论此时守护线程的代码是否执行完成,  都会被强行中止, 整个java程序结束。
后台线程
public final void setDaemon(boolean on)

Daemon 代码跟随下面这amn的代码执行,时间受“被保护 ”线程的运行时间所控制

public class Demo20 {

    public static void main(String[] args) throws InterruptedException {
        WuJiang dianWei = new WuJiang();
        dianWei.setName("典韦");
        dianWei.setDaemon(true);
        dianWei.start();

        WuJiang xiaHouDun = new WuJiang();
        xiaHouDun.setName("夏侯惇");
        xiaHouDun.setDaemon(true);
        xiaHouDun.start();

        ComputeThread aman = new ComputeThread();
        aman.setName("阿瞒");
        aman.start();
    }
}

(这两段代码相关)

class WuJiang extends Thread {

    @Override
    public void run() {
        for (int i = 0; i < 10;) {
            System.out.println(getName() + "正在战场上厮杀 -> " + (i + 1));
            try {
                TimeUnit.SECONDS.sleep(1);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}


class ComputeThread extends Thread {
    @Override
    public void run() {
        long num=0;
        //100亿次for循环
        for (long i = 0; i < 10000000000L; i++) {
            num++;
        }
    }
}

输出结果
在这里插入图片描述

中断线程(重要)

public final void stop()  纯了解
public void interrupt()  /  public boolean isInterrupted()
Thread.sleep三种方法之一阻塞,此时调用该线程的interrupt()方法,那么该线程将抛出一个 InterruptedException中断异常(该线程必须事先预备好处理此异常)
stop法
 		WuJiang ziLong = new WuJiang();
        ziLong.setName("子龙");
        ziLong.start();

        TimeUnit.SECONDS.sleep(5);
        //主线程就是诸葛亮, 等待5s后, 让子龙收手佯装撤退
        System.out.println("子龙, 准备撤退");
        //不推荐使用, 单方面的中止
        ziLong.stop();
interrupt法
 		WuJiang ziLong = new WuJiang();
        ziLong.setName("子龙");
        ziLong.start();
        TimeUnit.SECONDS.sleep(5);
        ziLong.interrupt();
class WuJiang extends Thread {

    @Override
    public void run() {
        for (int i = 0; i < 10;) {
            System.out.println(getName() + "正在战场上厮杀 -> " + (i + 1));

            if (isInterrupted()) {
                System.out.println("我接收到撤退信号了, 撤");
                break;
            }
    }
}

标签:ziLong,中断,void,线程,WuJiang,new,public,守护
From: https://blog.csdn.net/m0_73381821/article/details/141466571

相关文章

  • STM32学习记录-05 -1-TIM定时中断
    1TIM简介TIM(Timer)定时器定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断(如在STM32中主频为72MHz,计72个数即1MHz也就是1us,计72000个数即1KHz也就是1ms)16位计数器、预分频器(对计数器的时钟进行分频)、自动重装寄存器(计数的目标值,计多少个时钟申请中断)的时基单......
  • 在Java中实现通过TCP方式发送和接收Socket消息,包含在多线程状态下的实现
    导言:公司的代码,本来客户端client是前端的unity发送请求的,后面自己写的时候需要在本地进行测试,所以也用Java实现了前端,就写出来记录一下。本文主要展示客户端client跟服务端server基础代码,里面的一些业务逻辑没有进行展示正文1.创建client端首先我们需要创建一个client端进......
  • 并发编程[10]_线程池
    本文介绍java中的线程池类ThreadPoolExecutor。我们可以利用ThreadPoolExecutor创建线程池,这个类中有多个构造方法。ThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,longkeepAliveTime,TimeUnitunit,BlockingQueue<Runnable>workQueue)ThreadPoolEx......
  • 深度体验:可道云teamOS的私密保险箱,你的数据安全守护者
    自从我开始使用可道云teamOS,我就被它丰富的功能和便捷的操作深深吸引。而其中,最让我印象深刻的莫过于它的私密保险箱功能了。个人数据保险箱说实话,作为一个经常需要在网上处理各种文件和数据的人,数据安全问题一直是我非常关心的问题。而可道云teamOS的私密保险箱,就像是我个......
  • 并发编程[2]_线程的常用方法
    介绍一下线程常用的一些方法1.run()和start()start()方法让线程进入就绪状态run()方法是Runnable中的一个抽象方法,线程启动时就会调用run()方法(1)如果直接调用run()方法,是不会启动新线程的publicclassTest1{privatestaticfinalLoggerlog=LoggerF......
  • 并发编程[1]_线程的创建
    介绍线程创建的两种基本的方法:继承Thread类和实现Runnable接口1.继承Thread类自定义类继承Thread类,重写run()方法importorg.slf4j.LoggerFactory;/***@author:yt*@date:2021/4/1222:09*@description:创建Thread类继承Thread*/publicclassMyTh......
  • 并发编程[3]_java线程的六种状态
    java线程状态1.操作系统进程的五种状态网上找了一张图:2.java线程的六种状态Thread类中getState()方法可以获取线程的状态,返回值是Thread类中的enum类型,取值有NEW,RUNNABLE,BLOCKED,WAITING,TIMED_WAITING,TERMINATED六种状态。java的线程状态将阻塞状态细分为BLOCKED,WAITING......
  • 干货-并发编程提高——线程池(十二)
    提到线程池就不得不说池化技术,那么什么是池化技术呢?池化技术能够减少资源对象的创建次数,提高程序的性能。特别是高并发下这种提高更加明显。使用池化技术缓存的资源有如下特点:对象的创建时间长对象创建需要大量资源对象创建后可被重复使用有没有点儿像共享单车?一个资......
  • 多线程入门Demo
    packagerun;importjava.util.ArrayList;importjava.util.List;importjava.util.concurrent.CompletionService;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.ExecutorCompletionService;importjava.util.concurrent.Future;impo......
  • STM32学习记录-04-EXTI外部中断
    1中断系统(1)中断:在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前正在运行的程序,转而去处理中断程序,处理完成后又返回原来被暂停的位置继续运行(2)中断优先级:当有多个中断源同时申请中断时,CPU会根据中断源的轻重缓急进行裁决,优先响应更加紧急的中断源(3)中断嵌......