java学习——线程的生命周期

目录

1.线程的生命周期

1.六大状态:

2.线程状态转换图

代码 :


1.线程的生命周期

1.六大状态:

  • 线程状态。 线程可以处于以下状态之一:
    • NEW
      尚未启动的线程处于此状态。
    • RUNNABLE
      在Java虚拟机中执行的线程处于此状态。
    • BLOCKED
      被阻塞等待监视器锁定的线程处于此状态。
    • WAITING
      正在等待另一个线程执行特定动作的线程处于此状态。
    • TIMED_WAITING
      正在等待另一个线程执行动作达到指定等待时间的线程处于此状态。
    • TERMINATED
      已退出的线程处于此状态。

2.线程状态转换图

我们new一个线程,那么线程就处于一个new被创建的状态,然后我们调用start()方法后,就是进入了可运行状态(Runnable 状态),Runnable状态细分为两个状态Ready状态和Running状态。下面就是我们的用户态。这里如果将Runnable状态细分为两个状态那么就是7个状态,不然就是上面写的六个。然后在运行过程中我们调用了不同的方法,我们会进入不同的状态。当线程结束以后,我们就进入了结束状态TERMINATED

代码 :
public class ThreadState_ {
    public static void main(String[] args) throws InterruptedException {
        TS ts = new TS();
        System.out.println(ts.getName()+"  状态  "+ts.getState());
        ts.start();

        while (Thread.State.TERMINATED!=ts.getState()){
            System.out.println(ts.getName()+" State "+ts.getState());
            Thread.sleep(500);
        }
        System.out.println(ts.getName()+" 状态 "+ts.getState());

    }
}

class TS extends Thread{
    @Override
    public void run() {
        while (true){
            for (int i = 0; i < 10; i++) {
                System.out.println("t t t t t t ");
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
            }
            break;
        }
    }
}

结果如下:

开始,我们从New状态,通过start方法 进入了RUNNABLE状态,然后我们可以看到在sleep的作用下,我们线程进入了超时等待。最后结束的时候,我们进入了TERMINATED状态。

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值