Предисловие
Недавно я работаю с оригинальной статистикой баллов. Пользователи устанавливают соответствующие параметры через стойку регистрации и учитываются в режиме реального времени в фоновом режиме и возвращают данные. Относительно говоря, есть еще много статистических функций, поэтому давайте обобфрим их здесь.
Лучший пользовательский опыт заключается в том, что каждая операция может отображать данные в режиме реального времени. В течение 3 секунд это должно быть в пределах диапазона допуска пользователя. Следовательно, изготовление продукта не только требует рассмотрения дизайна взаимодействия с пользователем, но и оптимизация первой части необходима.
Вы можете просто взглянуть на вышеупомянутые 5 статистики. В целом, все еще довольно много статистики. Самым важным является быть в режиме реального времени, в реальном времени и в реальном времени (скажем, важные вещи три раза). Очевидно, что задачи времени нереалистичны.
Перед трансформацией
Программная логика
Выполнять задачи последовательно. PNG
После трансформации
Программная логика
Многозадачная параллельная обработка
Многозадачная параллельная обработка подходит для многоядерных процессоров. Многоподобные задачи, выполняемые одноядерными процессорами, могут быть контрпродуктивными (переключение контекста, создание и разрушение потока будут потреблять ресурсы), особенно задачи интенсивности процессора.
Реализация кода
Псевдо -код StatsDemo:
/*** Многозадачная параллельная статистика* Creator kebang.com* Время создания 16 апреля 2018 г.*/public class statsdemo {final static simpledateformat sdf = new Simpledateformat ("yyyy-mm-dd HH: MM: SS"); окончательная статическая строка starttime = sdf.format (new Date ()); public static void main (string [] args) бросает прерывание {countdownlatch latch = new countdownlatch (5); // два статистики статистики бегунов1 = новые статистики («Задача a», 1000, защелка); STATSTS2 = Новая статистика («Задача B», 2000, защелка); STATSTS3 = Новая статистика («Задача C», 2000, защелка); STATSTS4 = Новая статистика («Задача D», 2000, защелка); STATSTS5 = Новая статистика ("Task E", 2000, защелка); stats1.start (); // задача a начинает выполнять stats2.start (); // задача B начинает выполнять stats3.start (); // задача c начинает выполнять stats4.start (); // задача d начинает выполнять статирование5.start (); // задача E начинает выполнять lack.await (); // ждать всех задач. sdf.format (new date ())); } static class stats extends thread {string statsname; int runtime; Countdownlatch Latch; Public Stats (String StatsName, Int Runtime, CountDownLatch Latch) {this.StatsName = statsName; this.Runtime = время выполнения; this.latch = latch; } public void run () {try {System.out.println (statsName+ "DO Статистика начинается в"+ startTime); // имитировать поток времени выполнения задачи. Sleep (время выполнения); System.out.println (statsname + "Do Статистика завершена At" + sdf.format (new Date ())); latch.countdown (); // Одно задача заканчивается, счетчик уменьшается на один} catch (прерывание Exception e) {e.printstackTrace (); }}}}Поскольку мы хотим синхронно возвращать статистику, мы используем здесь класс countdownlatch, который представляет собой новый параллельный класс инструментов, добавленный в Java 5. Он очень прост в использовании. Подробные этапы использования приведены со ссылкой на приведенный выше псевдокод.
CountDownLatch используется для синхронизации одной или нескольких задач, заставляя их ждать набора операций, выполняемых другими задачами для выполнения. Типичное использование CountDownLatch заключается в разделении программы на N независимые задачи решателя и создание CountDownLatch со значением N. Когда каждая задача будет выполнена, обратный отсчет будет вызван этой защелкой, и задача, ожидающая решения проблемы, позвонит в ожидание этой защелки и блокирует их до тех пор, пока количество защелков не закончится.
Для конкретной интерпретации исходного кода вы можете ссылаться на: анализ исходного кода Countdownlatch
Исходный код проекта: https://gitee.com/52itstyle/spring-data-jpa
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.