ZK построен на сервлетах.Когда на интерфейсе пользователя отображается кнопка «Занят», ожидающая ответа ajax, поток сервлетов выполняет долгую работу на сервере.Возможно, можно было бы послать другой поток, чтобы прервать первый поток, но на самом деле это высокий риск, поскольку все потоки сервлета могут в конечном итоге выполнять длительную работу, и новые не будут доступны для их отмены.
Лучшее решение состоит в том, что длительная работа должна выполняться не в потоке сервлета, а в фоновом потоке или очереди сообщений.См. zk-asynchronous-ui-updates-and-background-processing .В этом примере работа выгружается в java.util.concurrent.ExecutorService, который имеет API для отмены работы.
Обратите внимание, что для отмены рабочего потока используется прерывание, и не гарантируется, что код, выполняющий работу, правильно отреагирует на прерывание, так что его фактически можно отменить.Ответы в теме отменить с помощью службы executor обрисовывают в общих чертах некоторые проблемы, и вам следует проверить, можно ли прервать работу, которую вы выполняете, с помощью API.