Как я могу прервать живую работу в игре!фреймворк - PullRequest
3 голосов
/ 26 декабря 2011

Я безуспешно пытался найти какую-то функцию, чтобы убить / прервать работающую работу в игре! основа.

Я что-то упустил? или играл! на самом деле не добавить эту функциональность?

1 Ответ

1 голос
/ 26 декабря 2011

Нет ничего похожего на 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, это должно работать.

...