JPDA 架構研究7 - Agent利用環境指針訪問VM(線程組管理篇)


引入:設計模式

上篇文章中咱們討論了Agent利用環境指針訪問VM的線程操做,這裏討論線程組操做。jvm


分類3:線程組操做ide

a.GetTopThreadGroups.讓Agent獲取VM中的全部全局的線程組。函數

jvmtiError
GetTopThreadGroups(jvmtiEnv* env,
            jint* group_count_ptr,
            jthreadGroup** groups_ptr)

函數會返回全局的線程組的數量和線程組的列表。線程


b.GetThreadGroupInfo。獲取某個線程組的信息。設計

typedef struct {
    jthreadGroup parent;
    char* name;
    jint max_priority;
    jboolean is_daemon;
} jvmtiThreadGroupInfo;
jvmtiError
GetThreadGroupInfo(jvmtiEnv* env,
            jthreadGroup group,
            jvmtiThreadGroupInfo* info_ptr)

從這裏能夠看出,它會包含線程組的父親,線程組名字(UTF-8格式),最大優先級,是否守護線程組等信息。指針


c.GetThreadGroupChildren.獲取某指定線程組的孩子們。it

jvmtiError
GetThreadGroupChildren(jvmtiEnv* env,
            jthreadGroup group,
            jint* thread_count_ptr,
            jthread** threads_ptr,
            jint* group_count_ptr,
            jthreadGroup** groups_ptr)

由於線程組和線程的關係也遵照設計模式中的Composite Design Pattern.因此某個線程組的孩子能夠是子線程組,也能夠是一些活着的子線程。因此這裏能夠看出,它會返回子線程的數量,子線程列表,子線程組數量,子線程組列表。io

相關文章
相關標籤/搜索