2014-04-21 25 views
7

Her ANR dökümü, ANR sırasında tüm iş parçacıklarının durumlarını listeler. WAIT'un ne anlama geldiğini biliyorum ama SUSPENDED ve MONITOR ne anlama geliyor? peşinDalvik iplik durumları nelerdir?

Teşekkür ... Dalvik iplik durumlarının

cevap

34

Özet:

  • BAŞLATILIYOR - henüz yayınlanmıyor.
  • BAŞLATMA - henüz çalışmıyor, ancak neredeyse orada.
  • ZOMBIE - merhum (bunu görmemelisiniz).
  • ÇALIŞMA (a/k/a RUNNABLE) - iş parçacığı aktif olarak çalışıyor. VM, yığın kümesini yapmak için tüm iş parçacıklarını askıya almalıdır, bu nedenle genel olarak, yığını yığıtık olandan başka herhangi bir iş parçacığı için görmezsiniz.
  • WAIT - wait() adlı iş parçacığı sabırla beklemektedir.
  • TIMED_WAIT - bir zaman aşımıyla wait() adlı iş parçacığı. (Thread.sleep(), bir zamanlanmış bekletme olarak uygulanır.)
  • MONITOR - iş parçacığı bir monitör kilitlemesinde engellenir, yani "senkronize" bir bloğa girmeye çalıştığı anlaşılır.
  • NATIVE - iş parçacığı yerel kodda çalışıyor. VM, JNI araması yapmadıkça (ki bu noktada ÇALIŞTIRILACAK, sonra da SUSPENDED), yerel koddaki konuları askıya almaz. VMWAIT - iş parçacığı, bir iç muteks gibi bir VM kaynağını almaktan engelleniyor. Ya da belki bir şeyler yapmak için bekliyoruz (örneğin, Derleyici ve GC konuları).
  • SUSPENDED - iş parçacığı çalıştırılabilir, ancak askıya alındı. Daha önce belirtildiği gibi, yığın damperi yığınlarını geçmeden önce tüm konuları askıya almayı seviyor, bu yüzden meşgul konularınız genellikle bu şekilde görünecektir. (Eski sürümlerde, bu durum yoktu; "askıya alındı", "sıfır olmayan bir SCount ile çalışma" olarak kullanılırdı.)
+1

Harika yanıt, teşekkürler. Keşke iki tane onay işareti verebilseydim! –

+0

Mükemmel , onları şimdi al – snowdream

+0

"RUNNING (a/k/a RUNNABLE) - iş parçacığı aktif olarak çalışıyor. Yığını boşa harcayan biri. "Bunu anlamıyorum, Hangi iş parçacığı durumunu görmüyorum, ÇALIŞIYORUM veya ÇALIŞIYORUM? – dragonfly