多线程的几种状态

简介: 多线程的几种状态

多线程的状态

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


🔎结尾

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

相关文章
|
6月前
|
存储 资源调度 Java
详解Java线程的几种状态
详解Java线程的几种状态
52 0
|
安全 Java 调度
线程的状态 and 线程安全
线程的状态 and 线程安全
44 0
|
4月前
|
Java 调度
Java线程的六种状态
Java线程有六种状态: 初始(NEW)、运行(RUNNABLE)、阻塞(BLOCKED)、等待(WAITING)、超时等待(TIMED_WAITING)、终止(TERMINATED)。
69 1
|
6月前
|
Java 调度
Java多线程基础-5:线程状态与状态的转移
本文介绍了Java中线程的五种状态:NEW、TERMINATED、RUNNABLE、TIMED_WAITING和BLOCKED,并提供了代码示例来展示状态转换。
48 0
|
6月前
|
Java
线程的666种状态
线程的666种状态
27 1
|
6月前
|
Java 调度
|
11月前
|
调度
【多线程】线程的状态
【多线程】线程的状态
|
存储 Linux 调度
多线程——线程概念和线程控制
什么是线程,POSIX线程库,线程控制:pthread_create线程创建,pthread_exit线程终止,pthread_join线程回收,pthread_cancel线程取消,pthread_detach线程分离。线程id和地址空间分局,C++语言级别的多线程,二次封装线程库
123 0
多线程——线程概念和线程控制
|
Java
Java线程状态
Java线程状态
57 0
|
Java
Java线程的几种状态
Java线程的几种状态
51 0