Heim > Java > JavaErste Schritte > Was sind die drei Hauptmerkmale von Multithreading?

Was sind die drei Hauptmerkmale von Multithreading?

王林
Freigeben: 2020-04-27 16:32:05
nach vorne
3218 Leute haben es durchsucht

Was sind die drei Hauptmerkmale von Multithreading?

Multithreading hat drei Hauptmerkmale, nämlich:

Atomizität, Sichtbarkeit, Ordnung

1 Was ist ein Atom?

bedeutet, dass ein Vorgang oder mehrere Vorgänge entweder vollständig ausgeführt werden und der Ausführungsprozess nicht durch irgendwelche Faktoren unterbrochen wird, oder dass sie überhaupt nicht ausgeführt werden.

Ein sehr klassisches Beispiel ist das Problem der Bankkontoübertragung:

Zum Beispiel muss die Übertragung von 1.000 Yuan von Konto A auf Konto B zwei Vorgänge umfassen: 1.000 Yuan von Konto A abziehen und dann überweisen 1.000 Yuan auf Konto B. Konto B fügt 1.000 Yuan hinzu. Diese beiden Vorgänge müssen atomar sein, um sicherzustellen, dass keine unerwarteten Probleme auftreten.

Das Gleiche gilt, wenn wir Daten verarbeiten, z. B. i = i+1; dazu gehört das Lesen des Werts von i, das Berechnen von i und das Schreiben von i. Diese Codezeile ist in Java nicht atomar, sodass Multithread-Operationen definitiv Probleme verursachen. Daher müssen wir auch Synchronisierung und Sperre verwenden, um diese Funktion sicherzustellen.

(Empfohlenes Video-Tutorial: Java-Video )

2. Was ist Sichtbarkeit

Wenn mehrere Threads auf dasselbe Wann zugreifen Wenn eine Variable geändert wird und ein Thread den Wert der Variablen ändert, können andere Threads den geänderten Wert sofort sehen.

Wenn sich die beiden Threads auf unterschiedlichen CPUs befinden, dann hat Thread 1 den Wert von i geändert und er wurde nicht im Hauptspeicher aktualisiert, und Thread 2 verwendet i erneut, dann muss der i-Wert immer noch der sein Das gleiche wie zuvor. Thread 1 hat ein Variablenpaar. Die Änderung, die Thread 2 nicht gesehen hat, war ein Sichtbarkeitsproblem.

3. Was ist Ordnung?

Die Reihenfolge der Programmausführung erfolgt in der Reihenfolge des Codes.

Um die Effizienz des Programmbetriebs zu verbessern, kann der Prozessor im Allgemeinen den Eingabecode optimieren. Es kann jedoch nicht garantiert werden, dass die Ausführungsreihenfolge jeder Anweisung im Programm mit der Reihenfolge im Code übereinstimmt. Es stellt jedoch sicher, dass das Programm letztendlich ausgeführt wird. Das Ergebnis stimmt mit dem Ergebnis der sequentiellen Ausführung des Codes überein. Wie folgt:

int a = 10; //语句1
int r = 2; //语句2
a = a + 3; //语句3
r = a*a; //语句4
Nach dem Login kopieren

Aufgrund der Neuordnung kann er auch die Reihenfolge 2-1-3-4, 1-3-2-4 ausführen, aber es ist absolut unmöglich, 2-1-4-3, weil diese Abhängigkeiten kaputt sind.

Natürlich verursacht eine Neuordnung kein Problem für den Single-Thread-Betrieb, aber nicht unbedingt für den Multi-Threading. Daher müssen wir dieses Problem bei der Programmierung mit Multi-Threading berücksichtigen.

Empfohlenes Tutorial: Erste Schritte mit Java

Das obige ist der detaillierte Inhalt vonWas sind die drei Hauptmerkmale von Multithreading?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage