suchen
HeimJavaJavaErste SchritteWas sind die drei Hauptmerkmale von Multithreading?

Was sind die drei Hauptmerkmale von Multithreading?

Apr 27, 2020 pm 04:32 PM
多线程特性

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

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!

Stellungnahme
Dieser Artikel ist reproduziert unter:csdn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

mPDF

mPDF

mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

WebStorm-Mac-Version

WebStorm-Mac-Version

Nützliche JavaScript-Entwicklungstools

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.