2016-11-09 5 views
1

я зарегистрировать JVMTI EventMethodEntry и его функция обратного вызова tdMethodEntry и если есть много много MethodEntry События и мой вопрос заключается в том, чтотакой же вид JVMTI EVENT обрабатывается одной и той же нитью?

этих события будет обработан в том же потоке через очередь? или обрабатываться несколькими потоками?

ответ

1

MethodEntry обратные вызовы, как и многие другие функции обратного вызова событий JVMTI, выполняются синхронно на потоке приложения, которое вызвало это событие. Если приложение запускает несколько потоков, обратные вызовы MethodEntry могут выполняться одновременно с этими потоками. События не поставлены в очередь.

См. Спецификацию JVMTI Events.

+0

если есть *** только одна прикладная нить ***, но обратный вызов делает много вещей (потребляя в основном время). В этом случае, хотя *** только один поток ***, должно быть *** несколько потоков *** выполнить обратный вызов для выполнения синхронно в потоке приложения? –

+0

@cainiaofei Нет, обратные вызовы запускаются в том же потоке, что и код приложения. С точки зрения приложения поток останавливается, когда выполняется обратный вызов. – apangin

+0

То есть все ** MethodEntry Event ** обрабатывается тем же * одним * потоком? Я немного запутался, потому что через мою выходную программу я думаю, что она обрабатывается более чем одним потоком. –

Смежные вопросы