Vorwort
Vor kurzem mache ich eine Funktion der ursprünglichen Score -Statistiken. Benutzer setzen relevante Parameter über die Rezeption und zählen in Echtzeit im Hintergrund und Rückgabedaten. Relativ gesehen gibt es immer noch viele statistische Funktionen, also fassen wir sie hier zusammen.
Die beste Benutzererfahrung ist, dass jeder Vorgang Daten in Echtzeit anzeigen kann. Innerhalb von 3 Sekunden sollte es im Toleranzbereich des Benutzers liegen. Das Erstellen eines Produkts erfordert daher nicht nur die Berücksichtigung des Benutzer-Interaktionsdesigns, sondern auch die Back-End-Optimierung unverzichtbar.
Sie können sich einfach die oben genannten 5 Statistiken ansehen. Insgesamt gibt es immer noch eine Menge Statistiken. Das Wichtigste ist, Echtzeit, Echtzeit und Echtzeit zu sein (sagen Sie dreimal wichtige Dinge). Offensichtlich sind Zeitaufgaben unrealistisch.
Vor der Transformation
Programmlogik
Aufgaben nacheinander ausführen
Nach der Transformation
Programmlogik
Multitasking Parallele Verarbeitung.png
Die parallele Multitasking-Verarbeitung eignet sich für Multi-Core-CPUs. Multi-thread-Aufgaben, die von Single-Core-CPUs ausgeführt werden, können kontraproduktiv sein (Kontext-Schalt- und Gewindeerstellung und Zerstörung werden Ressourcen verbrauchen), insbesondere von CPU-intensiven Aufgaben.
Code -Implementierung
StatsDemo Pseudo -Code:
/*** Multitasking-Parallelstatistik* Ersteller kebang.com* Erstellungszeit 16. April 2018*/öffentliche Klasse StatsDemo {endgültig statische simpledateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd hh: mm: ss"); endgültige statische String startTime = SDF.Format (neues Datum ()); public static void main (String [] args) löst InterruptedException aus (Countdownlatch latch = new Countdownlatch (5); // Zwei Läufer -Stats Stats1 = neue Statistiken ("Aufgabe A", 1000, Latch); STATS STATS2 = Neue Statistiken ("Aufgabe B", 2000, Latch); STATS STATS3 = NEUE STATS ("Aufgabe C", 2000, Latch); STATS STATS4 = Neue Statistiken ("Task D", 2000, Latch); STATS STATS5 = Neue Statistiken ("Task E", 2000, Latch); stats1.start (); // Aufgabe A startet die Ausführung von Statistik2.Start (); // Aufgabe B beginnt mit der Ausführung von Statists3.Start (); // Aufgabe C beginnt die Ausführung von Statistik4.Start (); // Aufgabe D beginnt mit der Ausführung von Statistiken. abgeschlossen: " + sdf.format (neues Datum ())); } statische Klassenstatistiken erweitern Thread {String StatsName; int Runtime; Countdownlatch -Latch; öffentliche Statistiken (String StatsName, int RunTime, Countdownlatch -Latch) {this.statsname = statsName; this.runtime = runtime; this.latch = latch; } public void run () {try {system.out.println (StatsName+ "do statistics beginnt bei"+ starttime); // Aufgabenausführungszeit simulieren Thread.sleep (Laufzeit); System.out.println (StatsName + "do statistics vollständig bei" + SDF.Format (neues Datum ())); latch.countdown (); // einzelne Task endet, der Zähler wird durch eins reduziert} catch (InterruptedException e) {e.printstacktrace (); }}}}Da wir Statistiken synchron zurückgeben möchten, verwenden wir die Countdownlatch -Klasse hier, eine neue gleichzeitige Werkzeugklasse, die in Java 5 hinzugefügt wurde. Es ist sehr einfach zu bedienen. Die detaillierten Verwendungsschritte werden unter Bezugnahme auf den obigen Pseudo-Code angegeben.
Countdownlatch wird verwendet, um eine oder mehrere Aufgaben zu synchronisieren, wodurch sie gezwungen werden, auf eine Reihe von Operationen zu warten, die von anderen Aufgaben ausgeführt werden. Die typische Verwendung von Countdownlatch besteht darin, ein Programm in N -unabhängige Solver -Aufgaben zu teilen und eine Countdownlatch mit einem Wert von N zu erstellen. Wenn jede Aufgabe erledigt wird, wird Countdown auf diese Verriegelung aufgefordert, und die Aufgabe, die darauf wartet, dass das Problem gelöst wird, wird das Warten dieses Riegels bezeichnen und sie selbst blockieren, bis die Latch -Grafschaft vorbei ist.
Für die spezifische Quellcode -Interpretation können Sie sich beziehen: Quellcodeanalyse Countdownlatchlatch
Projektquellcode: https://gitee.com/52itstyle/spring-data-jpa
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.