溫馨提示×

java中的sleep和wait怎么使用

小億
103
2023-08-11 15:20:44
欄目: 編程語言

在Java中,sleep和wait都是用來控制線程的方法,但用途和使用方式有所不同。

  1. sleep方法:
  • sleep是Thread類中的一個靜態(tài)方法,用于暫停當(dāng)前線程的執(zhí)行,讓出CPU給其他線程執(zhí)行。

  • sleep方法的使用方式:Thread.sleep(millis),其中millis表示暫停的時間(以毫秒為單位)。

  • sleep方法會讓當(dāng)前線程進入阻塞狀態(tài),但不會釋放鎖。

示例代碼:

Thread.sleep(1000); //暫停1秒
  1. wait方法:
  • wait是Object類中的一個方法,用于使當(dāng)前線程等待,直到其他線程調(diào)用notify或notifyAll方法喚醒它。

  • wait方法的使用方式:object.wait(),其中object是一個對象,調(diào)用該方法的線程會進入該對象的等待池。

  • wait方法會讓當(dāng)前線程進入阻塞狀態(tài),并釋放鎖。

示例代碼:

synchronized (object) {
try {
object.wait(); //等待其他線程調(diào)用notify或notifyAll方法喚醒
} catch (InterruptedException e) {
e.printStackTrace();
}
}

需要注意的是,在調(diào)用wait方法之前,必須先獲取對象的鎖,否則會拋出IllegalMonitorStateException異常。

總結(jié):

  • sleep方法是Thread類的方法,用于暫停線程的執(zhí)行,不會釋放鎖。

  • wait方法是Object類的方法,用于使線程等待,直到其他線程喚醒,會釋放鎖。

0