Как проверить, завершено ли выполнение определенного потока в Jmeter - PullRequest
0 голосов
/ 04 марта 2020

Мне нужна функция, которая принимает имя потока и возвращает, запущен он или нет. Я пробовал функцию isAlive java, но она не работала.

1 Ответ

0 голосов
/ 04 марта 2020

Это не служба написания кода, поэтому, если вы «хотите» функцию, вы можете попросить кого-нибудь разработать ее для вас, используя такие внештатные онлайн-агентства, как Fiverr или Toptal

В качестве исключения я могу дать вам подсказку: если вы посмотрите на исходный код класса ThreadGroup , вы увидите что-то вроде:

// List of active threads
private final ConcurrentHashMap<JMeterThread, Thread> allThreads = new ConcurrentHashMap<>();    

Так что все активные потоки живут в allThreads Карта ThreadGroup.

Зная это, вы можете попытаться найти поток по имени на этой карте, если он не равен нулю - поток работает и наоборот.

Пример кода:

def threadName = 'Thread Group 1-1'

def threadGroup = ctx.getThreadGroup()
def field = org.apache.commons.lang3.reflect.FieldUtils.getDeclaredField(threadGroup.getClass(), 'allThreads', true)
def allThreads = field.get(threadGroup)

def thread1 = allThreads.keySet().find { key -> key.getThreadName().equals(threadName) }

if (thread1 != null) {
    log.info('Thread ' + threadName + ' is running')
} else {
    log.info('Thread ' + threadName + ' is not running')
}

Демонстрация:

enter image description here

Дополнительная информация: Apache Groovy - Почему и как вы должны его использовать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...