Rumah >Java >javaTutorial >Cara Menyegerakkan Benang dalam Java Tanpa Penyekatan: Menggunakan CountDownLatch untuk Komunikasi Benang-ke-Benang
Cara Menyegerakkan Benang dalam Java: Penyelesaian Praktikal untuk Komunikasi Benang-ke-Benang
Dalam pengaturcaraan Java, menyelaraskan berbilang benang untuk lancar pelaksanaan adalah penting. Pertimbangkan senario di mana anda mempunyai utas logik aplikasi dan utas akses pangkalan data yang mesti dijalankan serentak. Urutan ini memerlukan kebergantungan tertentu untuk dipenuhi sebelum meneruskan. Artikel ini meneroka teknik untuk menyegerakkan urutan aplikasi, memastikan ia menunggu urutan pangkalan data untuk siap.
Cabaran: Penyegerakan tanpa Penyekatan
Biasanya, Thread. join() digunakan untuk menyekat thread sehingga thread lain menamatkan pelaksanaannya. Walau bagaimanapun, dalam kes ini, kedua-dua utas mesti terus berjalan sepanjang hayat aplikasi. Menyekat satu utas tidak akan mencukupi.
Penyelesaian: CountDownLatch
Penyelesaian terletak pada menggunakan CountDownLatch. Kelas ini menggunakan kaunter yang bertindak sebagai titik pertemuan untuk urutan.
Pelaksanaan dalam Benang Aplikasi:
Dalam urutan aplikasi, cipta CountDownLatch dengan kiraan 1 :
CountDownLatch latch = new CountDownLatch(1);
Seterusnya, arahkan utas aplikasi untuk menunggu urutan pangkalan data siap:
latch.await();
Panggilan ini akan menyekat utas aplikasi sehingga utas pangkalan data memberi isyarat bahawa ia sudah sedia .
Pelaksanaan dalam Benang Pangkalan Data:
Dalam urutan pangkalan data, setelah proses pemulaan selesai, ia harus mengurangkan pembilang CountDownLatch:
latch.countDown();
Tindakan ini akan melepaskan utas aplikasi daripada keadaan menunggunya, membenarkan kedua-dua utas meneruskan operasinya dengan lancar.
Kelebihan:
Menggunakan CountDownLatch menawarkan beberapa kelebihan:
Atas ialah kandungan terperinci Cara Menyegerakkan Benang dalam Java Tanpa Penyekatan: Menggunakan CountDownLatch untuk Komunikasi Benang-ke-Benang. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!