Cara menggunakan kaedah objek dengan betul dalam Java: tunggu dan maklumkan
Di Java, tunggu dan maklumkan ialah kaedah penting yang digunakan untuk mencapai kerjasama antara berbilang benang. Penggunaan betul kedua-dua kaedah ini boleh mengelakkan masalah berbilang benang seperti keadaan perlumbaan dan kebuntuan, dan memastikan keselamatan dan kecekapan program. Artikel ini akan memperkenalkan cara menggunakan kaedah objek tunggu dan maklumkan dengan betul dalam Java dan memberikan contoh kod khusus.
1. Prinsip asas dan fungsi tunggu dan maklumkan
Sebelum memahami cara menggunakan tunggu dan beritahu dengan betul, anda perlu memahami prinsip dan fungsi asasnya.
2. Langkah menggunakan tunggu dan beritahu dengan betul
Untuk menggunakan tunggu dan beritahu dengan betul, anda perlu mengikuti langkah berikut:
3. Contoh kod khusus
Contoh kod berikut menunjukkan cara menggunakan tunggu dan pemberitahuan dengan betul untuk mencapai kerjasama antara dua urutan. Satu utas bertanggungjawab untuk menunggu untuk dikejutkan, dan satu lagi benang bertanggungjawab untuk bangun.
public class WaitNotifyExample { private static final Object lock = new Object(); private static boolean isReady = false; public static void main(String[] args) { Thread waitingThread = new Thread(() -> { synchronized (lock) { while (!isReady) { try { System.out.println("等待中..."); lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("等待结束!"); } }); Thread notifyingThread = new Thread(() -> { synchronized (lock) { try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("唤醒等待的线程..."); isReady = true; lock.notify(); } }); waitingThread.start(); notifyingThread.start(); } }
Jalankan kod di atas dan anda dapat melihat bahawa benang menunggu akan memasuki keadaan menunggu dan meneruskan pelaksanaan selepas dikejutkan.
Dalam contoh ini, kami menggunakan pembolehubah boolean kongsi isReady untuk mewakili keadaan menunggu. Benang menunggu akan menyemak adalahSedia sebelum memasuki bahagian kritikal Jika syarat tidak dipenuhi, kaedah tunggu akan dipanggil untuk memasuki keadaan menunggu. Selepas urutan bangun tidur memenuhi syarat, ia akan menukar nilai isReady dan memanggil kaedah pemberitahuan untuk membangunkan utas menunggu.
Perlu diingat bahawa apabila menggunakan tunggu dan beritahu, anda mesti memastikan bahawa benang memperoleh kunci objek yang sama. Jika tidak, benang tidak boleh memasuki keadaan menunggu dengan betul atau dibangunkan.
Ringkasan
Menggunakan kaedah tunggu dan maklumkan boleh mencapai kerjasama antara pelbagai rangkaian dan memastikan keselamatan dan kecekapan program. Apabila menggunakan kedua-dua kaedah ini, anda perlu mengikut langkah yang betul, termasuk mengunci, memanggil kaedah tunggu, menyemak keadaan, melepaskan kunci, memanggil kaedah pemberitahuan, dsb. Dengan menggunakan kaedah tunggu dan maklumkan secara rasional, kami boleh mengelakkan masalah berbilang benang dan meningkatkan kebolehpercayaan dan kebolehselenggaraan program.
Atas ialah kandungan terperinci Cara menggunakan kaedah objek tunggu dan beritahu dengan betul dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!