Heim  >  Artikel  >  Java  >  Eine kurze Einführung in JAVA

Eine kurze Einführung in JAVA

怪我咯
怪我咯Original
2017-06-23 13:52:061309Durchsuche

Kurze Geschichte

Frühe Computer enthielten kein Betriebssystem. Sie führten nur ein Programm von Anfang bis Ende aus, und dieses Programm hatte Zugriff auf alle Ressourcen des Computers. Mit der Entwicklung von Computern und dem Aufkommen von Betriebssystemen können Computer mehrere Programme gleichzeitig ausführen, und jedes Programm wird in einem separaten Prozess ausgeführt. Warum das tun? Hauptsächlich aus folgenden Gründen:

1.Ressourcennutzung Während das Programm wartet, kann der Computer ein anderes Programm ausführen und dieselbe Ressource kann von verschiedenen Programmen verwendet werden, was zweifellos zu einer Verbesserung führt Ressourcennutzung.
2.Fairness Verschiedene Benutzer und Programme haben die gleichen Rechte zur Nutzung des Computers. Jedes Programm teilt Ressourcen durch Zeitteilung, anstatt darauf zu warten, dass das vorherige Programm abgeschlossen ist, bevor es das nächste Programm startet.
3.Komfort Jedes Programm läuft unabhängig und kommuniziert bei Bedarf miteinander, was einfacher zu implementieren ist, als wenn ein Programm alle Aufgaben erledigt.

Da sich Computer vom Single-Tasking zum Multi-Tasking entwickelt haben, können sich Programme auf natürliche Weise von traditionellen seriellen Programmen zu gleichzeitigen Programmen entwickeln.

Der Vorteil serieller Programme besteht darin, dass sie einfach und intuitiv sind. Aber die oben genannten drei Gründe führten auch zur Entstehung von Threads. Der oben genannte Computer kann Programme in separaten Prozessen ausführen, und Threads ermöglichen die Existenz mehrerer Programmsteuerungsflüsse innerhalb desselben Prozesses. Mehrere Threads eines Programms können auch so geplant werden, dass sie von mehreren CPUs gleichzeitig ausgeführt werden. Dies entspricht der gleichzeitigen Ausführung mehrerer Programme (Prozesse) durch den Computer und der gleichzeitigen Ausführung mehrerer Threads durch das Programm. Das heißt, Threads innerhalb des Prozesses ausführen.

Threads werden auch als Lightweight-Prozesse bezeichnet. Heutige Betriebssysteme sind alle mit Threads als Grundeinheit geplant. Da Ressourcen von Threads gemeinsam genutzt werden und kein klarer Synchronisierungsmechanismus vorhanden ist, führt dies zu einer ungeordneten Ausführung zwischen Threads, Datenfehlern oder -ausfällen und Ausnahmen. Hier liegt oft die Schwierigkeit bei der gleichzeitigen Programmierung.

Aus meiner Sicht handelt es sich bei der sogenannten gleichzeitigen Programmierung um die Verwendung von Threads. Threads können viele asynchrone Arbeitsabläufe in serielle Arbeitsabläufe umwandeln, und die gleichzeitige Programmierung besteht darin, eine Synchronisierung in asynchronen Situationen zu erreichen, damit sie den Anforderungen entspricht.

Was sind also die Vorteile und Risiken von Fäden?

Thread-Vorteile

Threads können die Programmentwicklungs- und Wartungskosten effektiv senken und die Leistung verbessern. Reduzieren Sie die Komplexität des Codes und simulieren Sie menschliche Arbeitsmethoden besser.

Vorteil 1 Die leistungsstarken Funktionen von Multiprozessorsystemen werden immer perfekter, was die Rolle von Threads besonders deutlich macht. Da verschiedene Threads von mehreren Prozessoren gleichzeitig geplant werden können, insbesondere während E/A-Vorgängen, wird die Wartezeit des Programms reduziert. Multiprozessoren verbessern die Effizienz der Programmausführung und erhöhen dadurch den Systemdurchsatz.
Vorteil 2 Reduzieren Sie die Schwierigkeit beim Modellieren. Es ist einfacher, immer das Gleiche zu tun, als mehrere Dinge zu tun. Verwenden Sie Threads, um Programmaufgaben zu verfeinern und mehrere Aufgaben mehreren Threads zuzuweisen. Jeder Thread hat eine einzelne Aufgabe und kommuniziert bei Bedarf miteinander. Das Hin- und Herwechseln von Aufgaben ist kostengünstiger.
Vorteil 3 Vereinfachen Sie die asynchrone Ereignisverarbeitung. Wenn eine Anfrage ausgegeben wird, um auf eine Antwort zu warten, muss dann das gesamte Programm warten? Das bedeutet, dass alle anderen Anfragen blockiert werden. Genau wie beim Chatten muss die andere Partei antworten, bevor Sie den nächsten Satz sagen können. Dies ist offensichtlich unvernünftig. Wenn jede Anfrage von einem Thread verarbeitet wird, sind die Threads unabhängig und beeinflussen sich nicht gegenseitig, wodurch das Problem gelöst wird. Wenn Sie wissen möchten, was die andere Partei bei der Antwort in einem Chat gesagt hat, achten Sie natürlich auf die Thread-Sicherheit.
Vorteil 4Reaktionsfähigere Benutzeroberfläche. Herkömmliche GUI-Programme sind Single-Threaded. Wenn die Verarbeitung eines Benutzerereignisses zu lange dauert, bleibt das gesamte Programm hängen, was die Benutzererfahrung verschlechtert. Wenn einige zeitaufwändige Vorgänge einem separaten Thread zugewiesen werden, werden andere Ereignisse weiterhin vom Thread verarbeitet, wodurch die Benutzeroberfläche reibungsloser wird.

Thread-Risiko

Thread-Unterstützung ist ein zweischneidiges Schwert, und die Entwicklung gleichzeitiger Programme stellt auch höhere Anforderungen an Programmierer.

Risiko 1 Sicherheitsprobleme Die gleichzeitige Programmierung kann Fehler verursachen, die in Single-Thread-Programmen nicht auftreten.
Risiko2 Lebendigkeitsproblem Die Definition von Lebendigkeit ist „etwas Richtiges wird definitiv passieren“. Endlosschleifen in einem einzelnen Thread sind Probleme mit der Lebendigkeit. Wenn Thread A darauf wartet, dass Thread B die von ihm gehaltenen Ressourcen freigibt, und Thread B sie nicht freigegeben hat, wartet Thread A ewig. Dies ist ein Aktivitätsproblem.
Risiko 3Leistung bedeutet „das Richtige so schnell wie möglich geschieht“. Ein gutes Parallelitätsdesign verbessert die Leistung und umgekehrt verringert es die Leistung. Schließlich verbraucht das Starten von Threads auch Ressourcen.

Es gibt ein gutes Beispiel zum Thema Sicherheit:

value++;

Mit nur dieser einen Codezeile gibt es in einem Single-Thread-Programm überhaupt kein Problem, in Multi-Thread-Programmen können jedoch unerwartete Konsequenzen auftreten.

Es gibt drei Schritte, um diese Codezeile auszuführen: 1. Wert lesen 2. 1 zum Wert addieren 3. Den hinzugefügten Wert wieder dem Wert zuweisen; Wenn in diesem Zeitraum zwei Threads den Wert gleichzeitig lesen, denselben Wert erhalten und gleichzeitig 1 hinzufügen, erhalten verschiedene Threads denselben Wert . Und wir erwarten, dass dieser Mehrwert doppelt entsteht.

Jedes Java-Programm verwendet Threads. Auch wenn Sie Threads erstellen, ohne sie explizit im Programm zu erstellen, muss das von Ihnen verwendete Framework dennoch Thread-sicher sein.

Das obige ist der detaillierte Inhalt vonEine kurze Einführung in JAVA. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn