Android基础线程的多种状态

线程有几种状态,分别是哪些?

1.New,新建状态,当程序new了一个线程后,线程就处于新建状态,此时线程还未启动;当线程对象调用start()方法时,线程启动进入Runnable(就绪状态)状态

2.Runnable状态:可运行(就绪)状态;此时线程准备就绪,等待获取CPU;

3.Running(运行状态);线程获取到了cpu,进入运行状态,执行run方法.

4.Blocking(阻塞状态) 线程调用了slepp()方法,会主动放弃cpu资源;当阻塞结束时,该线程将会到就绪状态,而非直接进入运行状态.

5.Dead状态,也就是死亡状态;线程的run方法结束,就会进入dead状态,线程死亡后不能作为线程再次调用;

sleep让当前线程进入休眠状态(但线程不会释放已获取的锁),从休眠状态“苏醒”后,线程会进入到Runnable状态。

wait()//交出cpu,让CPU去执行其他的任务,让线程进入阻塞状态,同时也会释放锁

yield()//使当前线程交出CPU,让CPU去执行其他的任务,但不会是线程进入阻塞状态,而是重置为就绪状态,yield方法不会释放锁

wait和sleep的区别:

1.sleep是thread类的静态方法,而wait是object的

2.最主要是sleep方法没有释放锁,而wait方法释放了锁,使其他线程可以使用同步控制块或者方法

3.sleep必须捕获异常,而wait,notify和notifyAll不需要捕获异常。

    原文作者:正阳Android
    原文地址: https://www.jianshu.com/p/a4191055efee
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞