多线程的几种状态

简介: 多线程的几种状态

多线程的状态

  • 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状态


🔎结尾

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

相关文章
|
1月前
|
存储 资源调度 Java
详解Java线程的几种状态
详解Java线程的几种状态
33 0
|
8月前
|
安全 Java 调度
线程的状态 and 线程安全
线程的状态 and 线程安全
33 0
|
1月前
|
Java 调度
Java多线程基础-5:线程状态与状态的转移
本文介绍了Java中线程的五种状态:NEW、TERMINATED、RUNNABLE、TIMED_WAITING和BLOCKED,并提供了代码示例来展示状态转换。
23 0
|
6月前
|
调度
【多线程】线程的状态
【多线程】线程的状态
|
9月前
|
存储 Linux 调度
多线程——线程概念和线程控制
什么是线程,POSIX线程库,线程控制:pthread_create线程创建,pthread_exit线程终止,pthread_join线程回收,pthread_cancel线程取消,pthread_detach线程分离。线程id和地址空间分局,C++语言级别的多线程,二次封装线程库
88 0
多线程——线程概念和线程控制
|
9月前
|
Java
Java线程状态
Java线程状态
40 0
|
10月前
|
Java
Java线程的几种状态
Java线程的几种状态
39 0
|
安全 Java 调度
【Java并发编程 五】线程生命周期及状态切换
【Java并发编程 五】线程生命周期及状态切换
66 0
|
Java 调度 容器
【多线程与高并发】- 线程基础与状态
所谓线程就是操作系统(OS)能够进行运算调度的最小单位,是一个基本的CPU执行单元,也是执行程序流的最小单元。能够提高OS的并发性能,减小程序在并发执行时所付出的时空开销。线程是进程的一个实体,是被系统独立调度和分派的基本单位。
123 0
【多线程与高并发】- 线程基础与状态
【多线程】基础 | 线程的状态
大家好,上一篇主要主要是对多线程的了解,以及对Thread的start方法,进行了源码的跟踪,今天我们主要来说一说其他的状态。