Описание фреймворка для параллельной обработки
Если у вас есть вопросы, вы можете отправить электронное письмо автору или предоставить конкретные требования к сценарию. Спасибо за ваши комментарии. wuweifeng10@jd.com
Если вас интересует блокчейн, обратитесь к другому проекту GVP автора — введение в низкоуровневый блокчейн на Java (https://gitee.com/tianalei/md_blockchain).
Если вам нужно просто использовать этот фреймворк, пожалуйста, посмотрите ниже. Если вам необходимо глубоко понять, как этот фреймворк реализован шаг за шагом, от получения требований до обдумывания каждого шага, почему каждый класс спроектирован именно так, почему существуют эти методы, то есть как разработать этот фреймворк с нуля, я открыл колонку в CSDN (https://blog.csdn.net/tianaleixiaowu/category_. HTML), чтобы рассказать о том, как разрабатывается промежуточное ПО с нуля, включая и не ограничиваясь этим небольшим фреймворком. Внутренние коллеги JD могут поискать мою ERP на CF и посмотреть её.
Что предстоит сделать
В последнее время многие студенты сообщают, что хотят поддерживать динамическое распределение задач на основе конфигурации файла. Учитывая это, нам необходимо добавить дополнительную функцию плагина. В настоящее время функция не требует изменений. Однако формат файла, как точно выразить последовательность, параллельную последовательность и зависимость, является относительно сложным. Если есть соответствующие потребности и интересы, мы можем изучить его.
Общие сценарии параллельной работы
Возможные требования для сценариев параллельной работы — произвольное расположение
Возможные требования для сценариев параллельной работы — обратные вызовы для каждого результата выполнения Традиционные future и completeablefuture могут в некоторой степени выполнять хореографию задач и передавать результаты следующей задаче. Например, completabilefuture имеет метод then, но он не может выполнять обратный вызов для каждого исполнительного блока. Например, если выполнение a прошло успешно, за ним следует B, я надеюсь, что a будет иметь обратный вызов после выполнения, чтобы я мог отслеживать текущий статус выполнения или регистрировать что-то. В случае неудачи я также могу записать информацию об исключении или что-то ещё. На данный момент традиционные методы ничего не могут сделать. Мой фреймворк предоставляет такую функцию обратного вызова. Кроме того, если выполнение завершается неудачно или истекает время ожидания, при определении исполнительного блока можно установить значение по умолчанию.
Возможные требования сценариев параллельной работы — сильная и слабая зависимость от порядка выполнения Как показано на рисунке 3, a и B выполняются одновременно, и... Наконец, C.
В некоторых сценариях мы хотим выполнить C только после того, как a и B завершат выполнение. Существует метод allow (futures...). Then () в completable future.
В других сценариях мы хотим, чтобы либо a, либо B завершили выполнение, а затем выполнили C. Существует метод anyof (futures...). Then() в completable future.
Мой фреймворк также предоставляет аналогичные функции. При установке зависимости adddepend в оболочке можно указать, должна ли зависимая задача быть выполнена. Если вы полагаетесь на выполнение must, вы должны дождаться завершения всех зависимостей must перед выполнением себя.
Если вы не полагаетесь на must, то можете выполнить любую зависимость, а затем выполнить себя.
Возможные требования для параллельных сценариев — использование результатов вышестоящего выполнения в качестве входных параметров.
Например, для трёх блоков выполнения a-b-c входной параметр a — строка, а выходной параметр — int. Для B необходимо использовать результат a в качестве входного параметра. Другими словами, a и B не являются независимыми, но зависят от результата.
Прежде чем a завершит выполнение, B не может получить результат. Он просто знает тип результата A.
Таким образом, мой фреймворк поддерживает такие сценарии. Вы можете взять класс-оболочку результата a в качестве входного параметра B при организации. Хотя это не реализовано в настоящее время, он должен быть пустым, но это может гарантировать, что после реализации a участие B будет назначено.
Возможные требования для параллельных сценариев — тайм-аут всей группы задач.
Для группы задач, хотя время каждого внутреннего блока выполнения не контролируется, я могу контролировать, чтобы время выполнения всей группы не превышало определённое значение. Контролируйте порог выполнения всей группы, установив тайм-аут.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )