什么是Dalvik线程状态?

Bar*_*man 10 android dalvik android-anr-dialog

每个ANR转储都列出了ANR时所有线程的状态.我知道什么WAIT意思但是做什么SUSPENDEDMONITOR意味着什么?

提前致谢...

fad*_*den 37

Dalvik线程概述:

  • INITIALIZING - 尚未运行.
  • 开始 - 尚未运行,但几乎在那里.
  • ZOMBIE - 已故(你不应该看到这个).
  • RUNNING(a/k/a RUNNABLE) - 线程正在运行.VM必须挂起所有线程才能进行堆栈转储,因此除了转储堆栈之外的任何线程通常都不会看到这个.
  • WAIT - 名为wait()的线程,耐心等待.
  • TIMED_WAIT - 调用wait()的线程,超时.(Thread.sleep()实现为定时等待.)
  • 监视器 - 监视器锁上的线程被阻塞,即它试图进入"同步"块时卡住了.
  • NATIVE - 线程正在本机代码中执行.VM不会在本机代码中挂起线程,除非它们进行JNI调用(此时它们转换为RUNNING,然后立即转换为SUSPENDED).
  • VMWAIT - 线程被阻止获取VM资源,如内部互斥锁.或者可能正在等待某些事情(例如编译器和GC线程).
  • SUSPENDED - 线程可以运行,但已被暂停.如前所述,堆栈转储器喜欢在遍历堆栈之前挂起所有线程,因此繁忙的线程通常会以这种方式显示.(在旧版本中,此状态不存在;"暂停"曾经是"使用非零sCount运行".)