什么是Dalvik线程状态?

时间:2014-04-21 22:39:11

标签: android dalvik android-anr-dialog

每个ANR转储都列出了ANR时所有线程的状态。我知道WAIT的含义是什么,SUSPENDEDMONITOR是什么意思?

提前致谢...

1 个答案:

答案 0 :(得分:37)

Dalvik线程概述:

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