Einige Freunde fragten heute nach dem Konzept des Java-Multithreadings. Der Herausgeber ist der Meinung, dass wir nur durch die Beherrschung des grundlegenden Thread-Konzepts ein tieferes Verständnis von Multithreading erlangen können Wenn mehrere Dinge gleichzeitig ausgeführt werden, können während der tatsächlichen Verwendung mehrere Threads denselben Datenblock bearbeiten, sodass das Problem der Multithreading-Aufmerksamkeit entsteht. Lassen Sie uns zunächst die Grundkonzepte von Threads und der einfachen Code-Implementierung verstehen
Klassisches Beispiel für die Demonstration von Java-Thread-Lern-Lesern und -Schreibern
Hauptsächlich das klassischste Beispiel für Java-Thread-Lern-Leser und -Schreiber Verwendung von Thread-bezogenem Wissen Wie folgt:
-Thread-Start und -Ausführung
-Thread-Ruhezustand (Ruhezustand)
-Datenobjektsperre (synchronisiert)
- Datenobjekt Warten und freigeben (warten und benachrichtigen)
Programmimplementierung:
-ObjectData-Datenklassenobjekt, die Sperrung wird über das synchronisierte Schlüsselwort implementiert und in Thread-Readern und -Writern verwendet.
-ConsumerThread Der Consumer-Thread benachrichtigt den Produzenten-Thread, nachdem er den Zählwert im Datenobjekt gelesen hat.
-ProductThread Der Producer-Thread verarbeitet den Zählwert im Datenobjekt und fügt jedes Mal 1 hinzu , Benachrichtigen Sie dann den Verbraucherthread
Das Klassenstrukturdiagramm lautet wie folgt:
Code-Implementierung
Verbraucherlesethread
package com.gloomyfish.jse.thirdteen; public class ConsumerThread extends Thread { private ObjectData data; public ConsumerThread(ObjectData data) { this.data = data; } @Override public void run() { while(true) { try { synchronized (data) { data.wait(); data.read(); data.notify(); } } catch (InterruptedException e) { e.printStackTrace(); } } } }
Thread schreiben – Produzententhread
package com.gloomyfish.jse.thirdteen; public class ProductThread extends Thread { private ObjectData data; public ProductThread(ObjectData data) { this.data = data; } @Override public void run() { while (true) { try { synchronized (data) { data.write(); Thread.sleep(3000); data.notify(); data.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } } } }
Datenobjektklasse
package com.gloomyfish.jse.thirdteen; public class ObjectData { private int count; public ObjectData() { count = 0; } public void read() { System.out.println("read count : " + count); System.out.println(); } public void write() { count++; System.out.println("write count : " + count); } }
Testcode:
public static void main(String[] args) { ObjectData data = new ObjectData(); ConsumerThread ct = new ConsumerThread(data); ProductThread pt = new ProductThread(data); ct.start(); pt.start(); }
Zusammenfassung:
Der Beispielprogrammcode vervollständigt die Implementierung der Synchronisationssteuerung für das Lesen und Schreiben von Daten zwischen Threads durch Warten und Benachrichtigen. Demonstriert die Verwendung des Java-Synchronisierungsschlüsselworts „synced“ und die Verwendung von Threads.
Das Obige ist der Inhalt der Thread-Instanz [Java Basics]. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).