Was sind die Dalvik-Thread-Zustände?

7

Jeder ANR-Dump listet die Zustände aller Threads zum Zeitpunkt der ANR auf. Ich weiß, was WAIT bedeutet, aber was bedeuten SUSPENDED und MONITOR ?

Vielen Dank im Voraus ...

    
Barry Fruitman 21.04.2014, 22:39
quelle

1 Antwort

34

Zusammenfassung der Dalvik-Thread-Zustände:

  • INITIALIZING - läuft noch nicht.
  • STARTING - noch nicht gelaufen, aber fast da.
  • ZOMBIE - verstorben (du solltest das nicht sehen).
  • RUNNING (a / k / a RUNNABLE) - Der Thread wird aktiv ausgeführt. Die VM muss alle Threads aussetzen, um den Stack-Dump auszuführen, sodass Sie dies im Allgemeinen für keinen anderen Thread als den, der den Stack ausgibt, sehen.
  • WAIT - der Thread namens wait () wartet geduldig.
  • TIMED_WAIT - Thread namens wait () mit einem Timeout. (Thread.sleep () wird als zeitgesteuertes Warten implementiert.)
  • MONITOR - der Thread ist auf einer Monitorsperre blockiert, d. h. er bleibt stecken und versucht, in einen "synchronisierten" Block zu gelangen.
  • NATIVE - Thread wird in nativem Code ausgeführt. Die VM unterbricht Threads im systemeigenen Code nicht, es sei denn, sie führen einen JNI-Aufruf durch (an diesem Punkt wechseln sie in RUNNING und dann sofort in SUSPENDED).
  • VMWAIT - Der Thread ist blockiert und erwirbt eine VM-Ressource wie einen internen Mutex. Oder vielleicht warten auf etwas zu tun (z. B. die Compiler und GC-Threads).
  • SUSPENDED - Thread konnte zwar ausgeführt werden, wurde jedoch deaktiviert. Wie bereits erwähnt, möchte der Stack-Dumper alle Threads aussetzen, bevor er ihre Stacks durchquert, so dass Ihre aktiven Threads in der Regel auf diese Weise angezeigt werden. (In älteren Releases war dieser Status nicht vorhanden; "suspended" war früher "RUNNING mit einem von Null verschiedenen sCount".)
fadden 21.04.2014, 22:44
quelle