Zusätzlicher Inhalt:
Synchronisation und Kommunikation zwischen Threads
Problem: Threads können sich gegenseitig stören, wenn sie auf freigegebene Daten zugreifen.
Lösung:
Synchronisierte Methoden
synchronized void synchronizedMethod() { // Código sincronizado }
Synchronisierte Blöcke:
synchronized (this) { // Código sincronizado }
Beispiel für eine Kommunikation:
Kommunikation zwischen Threads mit wait(), notify() und notifyAll():
class SharedResource { private boolean flag = false; synchronized void produce() { while (flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Producing..."); flag = true; notify(); } synchronized void consume() { while (!flag) { try { wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Consuming..."); flag = false; notify(); } } public class ThreadCommunication { public static void main(String[] args) { SharedResource resource = new SharedResource(); Thread producer = new Thread(resource::produce); Thread consumer = new Thread(resource::consume); producer.start(); consumer.start(); } }
Fazit
Das obige ist der detaillierte Inhalt vonSynchronisation und Kommunikation zwischen Threads. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!