【问题标题】:the same kind JVMTI EVENT processed by the same one thread?同一个线程处理的同一种JVMTI EVENT?
【发布时间】:2016-11-09 03:52:37
【问题描述】:

我注册了一个JVMTI EventMethodEntry,它的回调函数是 tdMethodEntry 如果有很多 MethodEntry 事件,我的问题是

这些事件会被同一个线程通过队列处理吗?还是被多个线程处理?

【问题讨论】:

    标签: java jvm jvmti


    【解决方案1】:

    MethodEntry 回调与许多其他 JVMTI 事件回调一样,在导致此事件的应用程序线程上同步执行。如果应用程序运行多个线程,MethodEntry 回调可能会在这些线程上同时运行。事件没有排队。

    请参阅 JVMTI 规范 Events 部分。

    【讨论】:

    • 如果有只有一个应用程序线程,但回调做了很多事情(耗费大量时间)。在这种情况下,虽然只有一个线程,但应该有多个线程运行回调在应用程序上同步执行线程?
    • @cainiaofei 不,回调与应用程序代码在同一线程上运行。从应用程序的角度来看,当回调正在进行时线程会停止。
    • 也就是说所有的MethodEntry Event都由同一个one线程处理?我有点困惑,因为通过我的程序输出,我认为它是由多个线程处理的。
    • @cainiaofei 是的,同一个线程。输出有什么问题?
    • 为了更好地描述我的问题,我将代码和输出描述放在github上,code and issue代码是名为methodEntryCapturer的文件和名为的输出描述>问题描述 .
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多