0
点赞
收藏
分享

微信扫一扫

Java线程的几种状态

mafa1993 2022-03-26 阅读 62
java

目录

NEW

TERMINATED

RUNNABLE 

TIMED_WAITING

BLOCKED

WAITING


线程有很多状态,除了针对操作系统层面上的就绪阻塞状态

在Java中, 线程还有自己专属的多种状态.

注意:Java中的状态和操作系统中的PCB中的两种状态没关系.

NEW

把 Thread 对象创建好了, 但是没有调用start

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

        });
        System.out.println(t.getState());
        t.start();
    }

TERMINATED

线程的run方法执行完毕

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

        });
        t.start();
        Thread.sleep(1000);//因为不确定是Main线程还是Thread线程执行完,这里让线程等1s就必定是线程执行完
        System.out.println(t.getState());
    }

RUNNABLE 

线程还未执行完,也没有在阻塞状态

    public static void main(String[] args) {
        Thread t = new Thread(() -> {
            //此时线程在无限循环中,随叫随到
            while (true){

            }
        });
        t.start();
        System.out.println(t.getState());
    }

TIMED_WAITING

线程运行了sleep方法或者运行了带参数的join方法,线程进入了阻塞状态

    public static void main(String[] args) throws InterruptedException {
        Thread t = new Thread(() -> {
            while (true){
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        Thread.sleep(1000);//不加的话不知道是哪个线程先执行完了
        System.out.println(t.getState());
    }

BLOCKED

WAITING

举报

相关推荐

0 条评论