Jython, остановить выполнение скрипта изнутри кода Java

Я использую Jython в качестве механизма сценариев в своем приложении Java. Я могу запустить любой скрипт Jython из своего Java-приложения, вызвав pi.execfile(script_name). Но проблема в том, что мне также нужен способ остановить выполнение скрипта вручную из кода Java. Как я могу остановить это, не изменяя скрипт Jython?

Я запускаю скрипт в отдельном потоке, поэтому попытался прервать его через scriptRunningThread.interrupt(); и поймать InterrupredException, но поток просто приостановится и зависнет... Вновь созданные потоки тоже будут зависать

Другой способ - поделиться общим объектом и сделать Jython-скрипт, чтобы проверить, хочет ли пользователь выйти.

Третий способ - запустить отдельный процесс (консольный режим моего приложения) и убить его при нажатии кнопки STOP. Но мне это решение не нравится...

Какие-либо предложения?


person Bob    schedule 10.10.2017    source источник


Ответы (1)


Лучший способ - это ваша вторая идея: чтобы сценарий Jython проверял наличие флага завершения и корректно завершал работу, если флаг установлен.

Если вы хотите прервать поток из другого потока, вы можете вызвать Thread.stop(), но это, как правило, плохая идея, поскольку это может привести к зависанию всего вашего приложения или иным неправильным действиям при определенных обстоятельствах.

person Warren Dew    schedule 10.10.2017
comment
проблема в том, что я не хочу заставлять пользователя добавлять этот оператор проверки - person Bob; 10.10.2017