当前位置: 首页 > article >正文

多线程的几种状态

Java-多线程的几种状态

  • 🔎1.NEW( 系统中线程还未创建,只是有个Thread对象)
  • 🔎2.RUNNABLE( (就绪状态. 又可以分成正在工作中和即将开始工作)
  • 🔎3.TERMINATED(系统中的线程已经执行完了,Thread对象还在)
  • 🔎4.TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)
  • 🔎5.BLOCKED(线程阻塞状态)
  • 🔎6.WAITING(使用wait方法出现的状态)
  • 🔎结尾

多线程的状态

  • NEW( 系统中线程还未创建,只是有个Thread对象)
  • RUNNABLE(就绪状态. 又可以分成正在工作中和即将开始工作)
  • TERMINATED(系统中的线程已经执行完了,Thread对象还在)
  • TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)
  • BLOCKED(线程阻塞状态)
  • WAITING(使用wait方法出现的状态)

🔎1.NEW( 系统中线程还未创建,只是有个Thread对象)

public class Test {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {

        });
		
		//线程启动之前获取线程状态 --> 只是有个Thread对象
        System.out.println(t.getState());

        t.start();
    }
}

🔎2.RUNNABLE( (就绪状态. 又可以分成正在工作中和即将开始工作)

public class Test {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while(true) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

            }

        });

        t.start();
        //线程就绪状态
        System.out.println(t.getState());
    }
}

🔎3.TERMINATED(系统中的线程已经执行完了,Thread对象还在)

public class Test {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            
        });

        t.start();

        try {
            Thread.sleep(500);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //线程TERMINATED状态
        System.out.println(t.getState());
    }


🔎4.TIMED_WAITING(指定时间等待,调用Thread.sleep()方法)

public class Test {
    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            while(true) {
                try {
                    Thread.sleep(500);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });

        t.start();

        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        //线程TIMED_WAITING状态
        System.out.println(t.getState());
    }
}

🔎5.BLOCKED(线程阻塞状态)

阻塞状态值得是代码不继续执行,而在等待
阻塞结束后,线程重新进入就绪状态
影响阻塞的方法

  • sleep()
  • wait()
  • join()
  • yield()

🔎6.WAITING(使用wait方法出现的状态)

线程调用 wait() 方法之后,就会变为 WAITING状态


🔎结尾

如果大家有什么不太理解的,可以私信或者评论区留言,一起加油


http://www.kler.cn/a/4459.html

相关文章:

  • Android中下载 HAXM 报错 HAXM installation failed,如何解决?
  • 「实战应用」如何为DHTMLX JavaScript 甘特图添加进度线
  • 网络安全概述
  • scrapy爬取图片
  • 《机器学习》——贝叶斯算法
  • 一个使用 Golang 编写的新一代网络爬虫框架,支持JS动态内容爬取
  • 2023最新版360度无死角python学习路线
  • Python提取文本文件中某个位置的数据
  • 简化代码,提高效率:C++ auto关键字的魅力
  • 短信宝接入发送短信实测 Java
  • 【操作系统】一文带你深入浅出零拷贝技术
  • Apache POI 入门·第一话
  • Autosar诊断-简介和功能概述
  • 网络基础知识
  • 应用层 —— HTTP协议
  • Spark大数据处理讲课笔记2.3 Spark运行架构与原理
  • Android的虚拟机垃圾回收解析,简单明了看完通透
  • Jython
  • 1652_MIT 6.828 shell例程重定向的实现分析
  • mysql隐式转换 “undefined“字符串匹配到mysql int类型0值字段
  • MySQL——锁
  • K8s CrashLoopBackOff 如何排障?
  • 如何注册Shopify商店
  • 汇编语言(1)——寄存器
  • 编写python的smtplib库发送邮件代码(简洁-原创)
  • js中generator详解