Android基础线程的多种状态

作者: 正阳Android | 来源:发表于2017-11-16 16:09 被阅读6次

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

    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.haomeiwen.com/subject/awolvxtx.html