【转】DDMS中线程状态的说明

因为最近的工作中需要关注APP中的线程,在DDMS中可以查看某个应用的线程:

可以看到每个线程都有自己的status属性,那不同的status分别代表什么情况呢?

running – executing application code  – 正在执行应用程序,准确的来说正在处理消息。
   sleeping – called Thread.sleep()  – 执行了Thread.sleep() 方法,线程让出了CPU,正在休眠。
   monitor – waiting to acquire a monitor lock – 在正等待获取一个监听锁,线程被阻塞。
   wait – in Object.wait() – 在Object.wait() 方法中,线程被阻塞。
   native – executing native code  – 执行了原生代码,这个对于 带有消息队列的线程是正常的状态,表示消息队列没有任何消息,线程在native 代码中进行无限循环,直到消息队列中出现新的消息,消息队列才会返回Java 代码处理消息。
   vmwait – waiting on a VM resource – 正在等待一个虚拟机资源
   zombie – thread is in the process of dying  – 该线程已死
   init – thread is initializing (you shouldn’t see this) – 线程正在初始化 (你不会看到这个)
   starting – thread is about to start (you shouldn’t see this either) – 线程正在启动中 (这个你也不会看到)

from:http://blog.csdn.net/zhouyingge1104/article/details/42556163

时间: 2024-08-28 21:22:56

【转】DDMS中线程状态的说明的相关文章

java中线程状态-死亡

线程死亡: 线程会以如下3种方式结束,结束后就处于死亡状态. 1.run()或call()方法执行完成,线程正常结束. 2.线程抛出一个未捕获的Exception或Error 3.直接调用该线程的stop方法结束该线程---该方法容易导致死锁,通常不推荐使用. 为了测试某个线程是否已经死亡,可以调用线程对象isAlive()方法,当线程处于就绪.运行.阻塞三种状态时,该方法返回true:当线程处于新建.死亡两种状态,该方法将返回false. 注意:不要试图对一个死亡的线程调用start方法使它重

获取其他进程中线程状态

进程是由线程组成,启动是的第一个线程为主线程. 对于Windows来说,不存在暂停或恢复进程的概念,因为进程从来不会被安排获得cpu时间. 但是我们可以创建一个函数,用来挂起或者恢复进程中的全部线程,这样就能挂起或者恢复一个进程了. 在进程外获取该进程的线程. 方法: 一.获取目标窗口句柄和进程PID HWND hCalc = ::FindWindow(NULL, "第几课作业 Hardware断点"); GetWindowThreadProcessId(hCalc, &th3

Java线程状态及Thread类中的主要方法

要想实现多线程,就必须在主线程中创建新的线程对象. 任何线程一般具有5种状态,即创建,就绪,运行,阻塞,终止. 创建状态: 在程序中用构造方法创建了一个线程对象后,新的线程对象便处于新建状态,此时,他已经有了相应的内存空间和其他资源,但还处于不可运行状态. 就绪状态: 新建线程对象后,调用该线程的start()方法可以启动线程.当线程启动时,线程进入就绪状态.此时,线程将进入线程队列排队,等待CPU服务,这表明它已经具备了运行条件.-------(运行start()方法只是进入就绪状态,并没有开

学习java线程状态和看懂thread dump文件中的线程信息

线程的状态是一个很重要的东西,因此thread dump中会显示这些状态,通过对这些状态的分析,能够得出线程的运行状况,进而发现可能存在的问题.线程的状态在Thread.State这个枚举类型中定义: public enum State { /** * Thread state for a thread which has not yet started. */ NEW, /** * Thread state for a runnable thread. A thread in the runn

线程的生命周期 - 理解Java中线程的状态

刚刚开始学cocos2-x,仅仅是按照教程把已经安了一般Android的开发环境的eclipse重新升级到安装好cdt和ndk就花了我几十小时,差点都要放弃了. 参考博客 D:\cocos2d-x\cocos2d-x-2.2.3\cocos2dx\platform\third_party\android\prebuilt 说说大概的过程: 下载ndk插件,ndk包,cdt插件.最开始我按照书上的下载了cocos2d-x 2.0.1,希望跟书上统一起来,这样以后学习的时候可以参考书上的也不会遇到太

java中线程的状态

java中线程有哪些状态? Thread类有一个内部的枚举,State 1.NEW 创建了一个Thread对象,还没有执行start之前,状态为NEW 2.RUNNABLE 调用了Thread的start()方法,状态变为 RUNNABLE 3.BLOCKED 正在等待获取锁,状态为BLOCKED.例如synchronized 4.WAITING 调用 Object.wait() 或 join() 方法后,线程进入WAITING状态.调用wait()方法需要通过notify()或notifyAl

jstack Dump日志文件中的线程状态

jstack Dump 日志文件中的线程状态 dump 文件里,值得关注的线程状态有: 死锁,Deadlock(重点关注)  执行中,Runnable 等待资源,Waiting on condition(重点关注) 等待获取监视器,Waiting on monitor entry(重点关注) 暂停,Suspended 对象等待中,Object.wait() 或 TIMED_WAITING 阻塞,Blocked(重点关注)   停止,Parked 下面我们先从第一个例子开始分析,然后再列出不同线程

Java中的线程状态转换和线程控制常用方法

Java 中的线程状态转换: [注]:不是 start 之后就立刻开始执行, 只是就绪了(CPU 可能正在运行其他的线程). [注]:只有被 CPU 调度之后,线程才开始执行, 当 CPU 分配给你的时间片到了, 又回到就绪状态, 继续排队等候. 线程控制的基本方法: isAlive(): 判断线程是否还活着, start 之后,终止之前都是活的; getPriority(): 获得线程的优先级数值; setPriority(): 设置线程的优先级数值(线程室友优先级别的);   Thread.

OC中线程的状态相关

1.线程的状态NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(run) object:nil];[thread start]; 2.控制线程状态 2.1>启动线程  -(void)start;   //进入就绪状态->运行状态.当线程任务执行完毕,会自动进入死亡状态2.2>阻塞(暂停)线程+(void)sleepUntilDate:(NSDate *)date+(void)sleepF