Rumah > Java > javaTutorial > Di Jawa, bilakah kita boleh memanggil kaedah wait() dan wait(long) Thread?

Di Jawa, bilakah kita boleh memanggil kaedah wait() dan wait(long) Thread?

WBOY
Lepaskan: 2023-09-03 23:41:09
ke hadapan
1006 orang telah melayarinya

Di Jawa, bilakah kita boleh memanggil kaedah wait() dan wait(long) Thread?

Apabila kaedah wait() dipanggil pada objek, ia menyebabkan thread semasa menunggu sehingga thread lain memanggil kaedah notify() atau notifyAll( ) pada objek itu, manakala wait( tamat masa yang lama) menyebabkan utas semasa menunggu sehingga urutan lain memanggil kaedah notify() atau notifyAll( ) pada objek ini, atau tempoh tamat masa yang ditentukan telah berlalu.

wait()

Dalam program di bawah, apabila wait() dipanggil pada objek, benang memasuki keadaan menunggu dari keadaan berjalan. Ia menunggu urutan lain untuk memanggil notify() atau notifyAll() untuk memasuki keadaan runnable, yang akan membentuk deadlock.

Contoh

class MyRunnable implements Runnable {
   public void run() {
      synchronized(this) {
         System.out.println("In run() method");
         try {
            this.wait();
            System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()");
         } catch (InterruptedException ie) {
            ie.printStackTrace();
         }
      }
   }
}
public class WaitMethodWithoutParameterTest {
   public static void main(String[] args) {
       MyRunnable myRunnable = new MyRunnable();
       Thread thread = new Thread(myRunnable, "Thread-1");
       thread.start();
   }
}
Salin selepas log masuk

output

In run() method
Salin selepas log masuk

tunggu(lama)

Dalam atur cara di bawah, apabila

tunggu(1000) dipanggil pada objek menunggu, nyatakan benang dari runut walaupun Jika notify() atau notifyAll() tidak dipanggil selepas tempoh tamat masa, thread juga akan memasuki keadaan runnable daripada keadaan menunggu. Contoh

class MyRunnable implements Runnable {
   public void run() {
      synchronized(this) {
         System.out.println("In run() method");
         try {
<strong>            this.wait(1000); 
</strong>            System.out.println("Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()");
         } catch (InterruptedException ie) {
            ie.printStackTrace();
         }
      }
   }
}
public class WaitMethodWithParameterTest {
   public static void main(String[] args) {
      MyRunnable myRunnable = new MyRunnable();
      Thread thread = new Thread(myRunnable, "Thread-1");
      thread.start();
   }
}
Salin selepas log masuk

Output

In run() method
Thread in waiting state, waiting for some other threads on same object to call notify() or notifyAll()
Salin selepas log masuk

Atas ialah kandungan terperinci Di Jawa, bilakah kita boleh memanggil kaedah wait() dan wait(long) Thread?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan