Heim > Java > javaLernprogramm > Hauptteil

Was ist Parallelität in Java?

青灯夜游
Freigeben: 2019-11-15 17:29:34
Original
2769 Leute haben es durchsucht

Was ist Parallelität in Java?

Parallelität und Parallelität

Parallelität: bezieht sich auf innerhalb eines bestimmten Zeitraums, Mehrere Aufgaben werden abwechselnd ausgeführt. Wenn mehrere Threads ausgeführt werden, wird die CPU-Laufzeit in mehrere Zeiträume unterteilt und diese Zeiträume dann jedem Thread zur Ausführung zugewiesen. Während der Code eines Threads ausgeführt wird, werden andere Threads angehalten.

Parallelität: bezieht sich auf die Fähigkeit, mehrere Aufgaben gleichzeitig zu erledigen. Wenn mehrere Threads ausgeführt werden, ist die Fähigkeit der CPU, Anforderungen von diesen Threads gleichzeitig zu verarbeiten, beeinträchtigt.

In einer gleichzeitigen Umgebung wird der Abschluss des Programms unterbrochen und die folgenden Merkmale treten auf:

1. Es besteht eine gegenseitige Einschränkungsbeziehung zwischen gleichzeitigen Programmen. Direkte Einschränkungen spiegeln sich darin wider, dass ein Programm die Berechnungsergebnisse eines anderen Programms erfordert. Indirekte Einschränkungen spiegeln sich darin wider, dass mehrere Programme um gemeinsam genutzte Ressourcen wie Prozessoren, Puffer usw. konkurrieren.

2. Der Ausführungsprozess gleichzeitiger Programme ist intermittierend. Das Programm muss sich Anweisungen und Ausführungspunkte vor Ort merken.

3. Wenn die Anzahl der Parallelität angemessen eingestellt ist und die CPU über ausreichende Rechenleistung verfügt, verbessert die Parallelität die Ausführungseffizienz des Programms.

Wenn in einer gleichzeitigen Umgebung mehrere Threads auf ein Objekt zugreifen können, kann das Objekt von jedem Thread, auf den zugegriffen wird, geändert werden, was zu Dateninkonsistenzen führt. Daher wird das Konzept der Thread-Sicherheit vorgeschlagen.

Einführung in die Grundkonzepte von Threads

Threads und Prozesse

Prozesse: Jeder Prozess verfügt über einen unabhängigen Code- und Datenraum (Prozesskontext), das Umschalten zwischen Prozessen verursacht einen großen Overhead und ein Prozess enthält 1–n Threads. (Prozess ist die kleinste Einheit der Ressourcenzuweisung). Einfach ausgedrückt handelt es sich bei Prozessen um voneinander isolierte Programme, die in gewissem Maße unabhängig voneinander ablaufen.

Threads: Threads desselben Typs teilen sich Code und Datenraum. Jeder Thread verfügt über einen unabhängigen laufenden Stapel- und Programmzähler (PC), und der Thread-Umschaltaufwand ist gering. (Thread ist die kleinste Einheit der CPU-Planung)

Threads sind wie Prozesse in fünf Phasen unterteilt: Erstellung, Bereitschaft, Ausführung, Blockierung und Beendigung.

Was ist Parallelität in Java?

1. Ein neues Thread-Objekt wird erstellt, aber die start()-Methode wurde noch nicht aufgerufen. Beispiel: Thread thread = new Thread();

2. Bereit: Nachdem das Thread-Objekt erstellt wurde, rufen andere Threads (z. B. der Hauptthread) die start()-Methode des Objekts auf. Der Thread in diesem Zustand befindet sich im ausführbaren Thread-Pool und wartet darauf, von der Thread-Planung ausgewählt zu werden, um das Recht zur Nutzung der CPU zu erhalten.

3. Ausführen: Der Thread im laufenden Zustand (ausführbar) erhält die CPU-Zeitscheibe (Zeitscheibe) und führt den Programmcode aus.

4. Blockiert (Blockiert): Der Thread ist blockiert. Der Unterschied zwischen „Blockierter Zustand“ und „Wartezustand“ ist: „Blockierter Zustand“ wartet darauf, eine exklusive Sperre zu erhalten Tritt auf, wenn ein Thread die Sperre aufgibt und der „Wartezustand“ eine Zeit lang wartet oder eine Weckaktion stattfindet. Der Thread wechselt in diesen Zustand, während das Programm darauf wartet, den synchronisierten Bereich (synchronisiert) zu betreten.

(1). Warten auf Blockierung: Der laufende Thread führt die Methode o.wait() aus und die JVM stellt den Thread in die Warteschlange.

(2). Wenn ein laufender Thread die Synchronisationssperre eines Objekts erhält und die Synchronisationssperre von einem anderen Thread belegt ist, stellt die JVM den Thread in den Sperrpool.

(3). Andere Blockierung: Wenn der laufende Thread die Methode Thread.sleep(long ms) oder t.join() ausführt oder eine E/A-Anfrage ausgibt, setzt die JVM den Thread auf is im Sperrzustand. Wenn der Zustand „sleep()“ abläuft, wartet „join()“ auf die Beendigung oder Zeitüberschreitung des Threads oder auf den Abschluss der E/A-Verarbeitung, und der Thread kehrt in den ausführbaren Zustand zurück.

5. Warten: Der Thread, der diesen Status erreicht, muss darauf warten, dass andere Threads bestimmte Aktionen ausführen (Benachrichtigung oder Unterbrechung).

6. Blockierung: Wenn ein Thread versucht, eine interne Objektsperre (nicht-java.util.concurrent-Bibliothekssperre) zu erlangen und die Sperre von anderen Threads gehalten wird, wechselt der Thread in den Blockierungszustand.

7. Warten: Wenn ein Thread darauf wartet, dass ein anderer Thread den Scheduler über eine Bedingung benachrichtigt, wechselt der Thread in den Wartezustand. Rufen Sie beispielsweise Object.wait(), Thread.join() auf und warten Sie auf Lock oder Condition.

8. Timeout-Warten (TIMED_WAITING): Dieser Zustand unterscheidet sich von WAITING, er kann nach der angegebenen Zeit von selbst zurückkehren.

9. TERMINATED: Zeigt an, dass die Ausführung des Threads abgeschlossen ist.

Das obige ist der detaillierte Inhalt vonWas ist Parallelität in Java?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!