Нет ничего похожего на stop
метод в классе Java Thread
, который не рекомендуется по уважительным причинам.Чистый способ - получить что-то вроде interrupted
логического значения.Если вы расширили play.jobs.Job
, вы можете легко добавить собственные interrupt
методы для изменения состояния заданий.Вы можете сделать что-то вроде:
ComputeBigPrime primeJob = new ComputeBigPrime();
Promise<Integer> promisedPrime = primeJob.now();
// Timeout for interrupt
await("10s");
primeJob.interrupt();
// Wait until it's really finished to get the result
Integer prime = await(promisedPrime);
render(prime);
Если вы хотите сделать прерывание между более чем одним запросом , вы можете использовать
play.cache.Cache
и установить уникальный идентификатор (например, UUID) с информацией, если поток прерван или нет.
Конечно, это не работает, если ваша работа зависает в каком-то другом вызове API и вы не можете использовать цикл, проверьте логическое значение interrupted
, но если вам действительно нужно выполнить хард stop
, как в Thread
, вы можете попробовать использовать Thread
внутри вашего контроллера или работы.Поскольку все это только Java, это должно работать.