Der Grund, warum Multithreading trotz der Herausforderungen immer noch verwendet wird, liegt darin, dass Multithreading immer noch mehrere Vorteile hat, einige dieser Vorteile sind:
Bessere Ressourcennutzung
Einfache Programmierung in einigen Szenarien
Schnelleres Reaktionsprogramm
Bessere Ressourcennutzung
Stellen Sie sich eine Anwendung vor, die Dateien aus dem lokalen Dateisystem liest und verarbeitet. Nehmen wir an, das Lesen einer Datei von der Festplatte dauert 5 Sekunden, die Verarbeitung dauert 2 Sekunden, die Ausführung beider Dateien dauert: Beim Lesen einer Datei von der Festplatte wird die meiste CPU-Zeit damit verbracht, darauf zu warten, dass die Datei gelesen wird. Zu diesem Zeitpunkt ist die CPU ziemlich im Leerlauf. Es kann einige andere Dinge tun. Durch Ändern der Reihenfolge dieses Vorgangs kann die CPU besser ausgelastet werden. Schauen Sie sich diese Reihenfolge an:
5 seconds reading file A 2 seconds processing file A 5 seconds reading file B 2 seconds processing file B ----------------------- 14 seconds total
CPU wartet darauf, dass die erste Datei gelesen wird. Dann beginnt es mit dem Lesen der zweiten Datei. Während die zweite Datei gelesen wird, führt diese CPU die erste Datei aus. Denken Sie daran, dass diese CPU die meiste Zeit im Leerlauf ist, während sie darauf wartet, dass Dateien von der Festplatte gelesen werden.
5 seconds reading file A 5 seconds reading file B + 2 seconds processing file A 2 seconds processing file B ----------------------- 12 seconds total
Einfachere Programmierung
Wenn Sie die obige Sequenz zum manuellen Lesen und Verarbeiten von Dateien in einer Single-Thread-Anwendung schreiben, müssen Sie dies tun Verfolgen Sie den Status jeder gelesenen und verarbeiteten Datei. Stattdessen können Sie zwei Threads starten, von denen jeder einfach eine separate Datei liest und verarbeitet. Jeder dieser Threads wird blockiert, während er darauf wartet, dass die Festplatte die Datei liest. Während des Wartens können andere Threads die CPU nutzen, um Teile der Datei zu verarbeiten, die sie bereits gelesen haben. Das Ergebnis ist, dass die Festplatte ständig damit beschäftigt ist, verschiedene Dateien in den Speicher zu lesen. Das Ergebnis ist eine bessere Festplatten- und CPU-Auslastung. Außerdem ist die Programmierung einfacher, da ein Thread nur eine einzelne Datei verfolgt. Schneller reagierende Programme
Ein weiteres gemeinsames Ziel ist die Umwandlung einer Single-Threaded-Anwendung in eine Multithread-Anwendung. Eine reaktionsfähigere App. Stellen Sie sich eine Serveranwendung vor, die einige Ports auf eingehende Anfragen überwacht. Wenn eine Anfrage empfangen wird, verarbeitet es die Anfrage und kehrt dann zum Abhören zurück. Dieser Serverzyklus lässt sich wie folgt zusammenfassen:
Wenn die Verarbeitung dieser Anfrage lange dauert, senden in dieser Zeit keine neuen Clients Anfragen an den Server. Nur der Server kann auf eingehende Anfragen warten.
while(server is active){ listen for request process request }
Auf diese Weise kehrt der Server-Thread schnell zu zurück Abhörgerät. So können mehr Clients Anfragen an den Server senden. Der Server ist reaktionsschneller geworden.
while(server is active){ listen for request hand request to worker thread }
Das Obige ist der Inhalt der Vorteile von Java-Multithreading. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).