Rumah >Java >javaTutorial >Penyegerakan dan Komunikasi antara Benang
Kandungan tambahan:
Penyegerakan dan Komunikasi antara Benang
Isu: Benang boleh mengganggu satu sama lain apabila mengakses data kongsi.
Penyelesaian:
Kaedah disegerakkan
synchronized void synchronizedMethod() { // Código sincronizado }
Blok disegerakkan:
synchronized (this) { // Código sincronizado }
Contoh Komunikasi:
Komunikasi antara urutan menggunakan wait(), notify() dan 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(); } }
Kesimpulan
Atas ialah kandungan terperinci Penyegerakan dan Komunikasi antara Benang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!