private void printThreadStatus() {
try {
File file = new File("/proc/" + android.os.Process.myPid() + "/task");
File[] files = file.listFiles();
Log.v("AndroidTest", "ThreadSize: " + files.length);
for (File fil : files) {
Log.v("AndroidTest", "file: " + fil.getAbsolutePath());
}
} catch (Exception e) {
Log.v("AndroidTest", "Exception: " + e.getMessage());
}
}
關(guān)于/proc/11232/task/11232中:
第一個11232:
表示的是pid, 進(jìn)程id
第二個11232:
表示的是tid, 線程id. 這兩個值相等與線程組有關(guān)
線程組:
??在linux系統(tǒng)中, 系統(tǒng)對進(jìn)程和線程的表示都是一樣的, 都是用task_struck結(jié)構(gòu). 都是用pid標(biāo)示進(jìn)程和線程的. 對于同一進(jìn)程中的不同線程, 這些線程只是在某些資源共享. 由于操作系統(tǒng)把進(jìn)程和線程都用pid標(biāo)示. 那么在現(xiàn)實(shí)情況中需要, 在給進(jìn)程發(fā)送某一信號時, 需要該進(jìn)程中的所有線程都響應(yīng)該信號, 如何做到這個要求呢? 就在task_struct結(jié)構(gòu)中引入了一個tgid域, 即線程組. 可以理解線程組id即為進(jìn)程id, 在該線程組中, 其中一個線程的pid = tgid, 該進(jìn)程即為線程組leader.