Временной семафор Java со счетчикомJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Временной семафор Java со счетчиком

Сообщение Anonymous »

Я пытаюсь использовать семафор Java, который вызывает API. Он будет принимать 100 записей данных в запросе API в минуту, независимо от времени ожидания ответа API.
Я попробовал использовать временный семафор

Код: Выделить всё

private final TimedSemaphore semaphore = new TimedSemaphore(1, TimeUnit.MINUTE, 100);

int apiRequestSize  = productRequest.size();
semaphore.tryAcquire(apiRequestSize);

productAPI(productRequest);

semaphore.release(apiRequestSize);
Однако timedSemaphore не принимает целые числа, он увеличивается только на 1 и предназначен для подсчета потоков.
Как я могу заставить это работать? В противном случае я могу реализовать это, не стесняйтесь добавлять лучшее/оптимизированное решение, если это возможно.

Код: Выделить всё

public class TimeSemaphore {
private final Semaphore semaphore;
private final ScheduledExecutorService scheduler;

public TimeSemaphore(int permitsPerSecond) {
this.semaphore = new Semaphore(permitsPerSecond);
this.scheduler = Executors.newScheduledThreadPool(1);

// Schedule a task to release permits every second
scheduler.scheduleAtFixedRate(() -> {
semaphore.release(permitsPerSecond - semaphore.availablePermits());
}, 0, 1, TimeUnit.MINUTE);
}

public boolean tryAcquire() {
return semaphore.tryAcquire();
}

public void stop() {
scheduler.shutdown();
}
}
RateLimiter не работает точно: поскольку он рассчитан на период в 1 секунду, а не на более длительный период.

Подробнее здесь: https://stackoverflow.com/questions/786 ... th-counter
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • В чем разница между счетчиком-установкой и счетчиком-сбросом в CSS?
    Гость » » в форуме CSS
    0 Ответы
    47 Просмотры
    Последнее сообщение Гость
  • Как преобразовать многомерный временной ряд в одномерный временной ряд?
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Проблемы со счетчиком функции jQuery «Добавить строку»
    Anonymous » » в форуме Jquery
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Попытка ограничить запрос Eloquent отношениями со счетчиком 0
    Гость » » в форуме Php
    0 Ответы
    23 Просмотры
    Последнее сообщение Гость
  • Исключение нулевого указателя со счетчиком на Котлине
    Anonymous » » в форуме Android
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «JAVA»