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不需要捕获异常。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 写在前面的话: 这篇博客是我从这里“转载”的,为什么转载两个字加“”呢?因为这绝不是简单的复制粘贴,我花了五六个小...
    SmartSean阅读 10,234评论 12 45
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 8,083评论 1 18
  • 本文主要讲了java中多线程的使用方法、线程同步、线程数据传递、线程状态及相应的一些线程函数用法、概述等。 首先讲...
    李欣阳阅读 7,196评论 1 15
  • 该文章转自:http://blog.csdn.net/evankaka/article/details/44153...
    加来依蓝阅读 12,072评论 3 87
  • 本文出自 Eddy Wiki ,转载请注明出处:http://eddy.wiki/interview-java.h...
    eddy_wiki阅读 6,632评论 0 14