Предположим, у меня есть класс с методом, который я не хочу вызывать более одного раза в пять секунд (например, он запрашивает веб-сервер, который черным списком приложений, которые слишком часто отправляют запросы). Каков наилучший способ реализации этого?Каков правильный способ написать метод, который нельзя назвать слишком часто?
Решение, которое я придумал, заключается в том, чтобы метод хранил временную метку в статической переменной-члене каждый раз, когда она выполнялась по вызову System.currentTimeMillis()
, и проверяйте эту отметку времени перед выполнением секретного кода. Но я нервничаю, что есть непредвиденные обстоятельства, которые я не предвидел, поэтому я хотел посмотреть, есть ли стандартный способ справиться с этой проблемой.
Нет стандартного способа. Итак, вы идете с сохранением последней метки времени звонка в порядке. – talex
Я бы сделал этот метод доступным для выполнения в другом потоке, чтобы не остановить текущее приложение для работы. В случае, если вы хотите, чтобы метод не мог выполняться так часто на уровне приложения, сделайте его «статическим» и используйте «статические» поля для его выполнения и вашего измерения времени, а также синхронизируйте его. –
@ LuiggiMendoza Метод не обязательно должен быть статическим; на самом деле, * группа * методов может быть определена для использования одной и той же политики тайм-аута. Все такие методы (возможно, из экземпляров нескольких разных типов) относятся к тем же статическим данным синхронизации. –