обработка крупномасштабных событий, инициируемых временем

StackOverflow https://stackoverflow.com/questions/1029164

  •  06-07-2019
  •  | 
  •  

Вопрос

Еще один вопрос в крупномасштабном программировании:

У меня есть очередь заданий с отметками времени и именем целевого файла.(Для каждой временной метки может быть обработано до 500 целевых файлов).Алгоритмы обработки одинаковы для всех 500 целевых файлов.Я хочу сделать:

  • Написать программу на Java
  • всякий раз, когда вы достигаете метки времени, запускайте все 500 заданий одновременно
  • делайте это эффективно, с точки зрения эффективности вычислений, загрузки процессора и масштабируемости

Я знаю глупый способ сделать это, используя цикл while, проверяя, является ли текущее время отметкой времени в очереди заданий....Но есть ли другие альтернативы?Я также гуглю это онлайн, и там также есть несколько ppl, говорящих об использовании команды cron в Unix.(Да, моя целевая настройка находится в Unix.)

Я новичок в этой области крупномасштабных вычислений, любая рекомендация или предложение приветствуется.

Это было полезно?

Решение

Используйте пакетный планировщик, такой как Кварц, если вы хотите, чтобы ваша очередь заданий была постоянной.

Более легкой альтернативой является ScheduledThreadPoolExecutor из пакета java.util.concurrent, который вы можете создать с помощью класса Executors factory.Это позволяет вам регистрировать выполняемые задачи, которые будут выполняться в определенное время.

Другие советы

Похоже, то, что вам нужно, - это приоритетная очередь.В основном вам нужно отсортировать свои элементы по метке времени в очереди.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top