Rumah >Java >javaTutorial >Di Jawa, bolehkah kita memanggil kaedah wait() tanpa memperoleh kunci?

Di Jawa, bolehkah kita memanggil kaedah wait() tanpa memperoleh kunci?

WBOY
WBOYke hadapan
2023-09-03 17:21:07786semak imbas

Di Jawa, bolehkah kita memanggil kaedah wait() tanpa memperoleh kunci?

Anda tidak boleh memanggil kaedah tunggu() tanpa mendapatkan kunci. Di Java, setelah kunci diperoleh, kita perlu memanggil kaedah wait() pada objek (boleh dengan atau tanpa tamat masa). Jika kita cuba memanggil kaedah wait() tanpa mendapatkan kunci, ia mungkin membuang java.lang.IllegalMonitorStateException pengecualian.

Contoh

public class ThreadStateTest extends Thread {
   public void run() {
      try {
<strong>         </strong>wait(1000);
      } catch(InterruptedException ie) {
         ie.printStackTrace();
      }
   }
   public static void main(String[] s) {
      ThreadStateTest test = new ThreadStateTest();
<strong>      </strong>test.start();
   }
}

Dalam contoh di atas, kita perlu memanggil kaedah wait() tanpa memperoleh kunci, yang akan menghasilkan IllegalMonitorStateException pada masa jalan. Untuk menyelesaikan masalah ini, kita perlu memperoleh kunci sebelum memanggil kaedah tunggu() dan mengisytiharkan kaedah run() disegerakkan.

output

Exception in thread "Thread-0" java.lang.IllegalMonitorStateException
at java.lang.Object.wait(Native Method)
at ThreadStateTest.run(ThreadStateTest.java:4)

Atas ialah kandungan terperinci Di Jawa, bolehkah kita memanggil kaedah wait() tanpa memperoleh kunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam