线程的生命周期

线程只有5种状态:new(新建)、waiting(等待)、runnable(可运行)、blocked(阻塞)、terminated(死亡)。整个生命周期就是这5中状态的相互切换。

线程的生命周期

1、new(新建)状态

    刚刚创建好还没有执行start()方法的线程就处于new状态。

Thread t = new Thread();

2、terminated(死亡)状态

    线程执行完run()方法后,就是terminated状态。

    需要注意,一个线程对象只能start一次,而且线程结束后,不能再进入其他状态。

3、waiting(等待)状态

    当线程处在runnable状态时调用了wait()方法(不带参数),这时候该线程就进入了waiting状态,比较要命的是线程一旦进入了waiting状态就不会自己醒来了,必须要别的线程通过notify或者notifyAll方法来唤醒,不然该线程一直处于waiting状态,永远也得不到使用cpu的机会。

4、Runnable(可运行)状态 = ready + running
    ready状态代表该线程准备好了,随时可以由调度器分配给cpu执行,而running状态呢表示该线程正在占用cpu,当线程的量子操作结束后,又可能由调度器让出cpu进如ready状态

yield() :让出cpu的执行权,将线程从运行转到可运行状态,但是下个时间片,该线程依然有可能被再次选中运行。