共計(jì) 468 個(gè)字符,預(yù)計(jì)需要花費(fèi) 2 分鐘才能閱讀完成。
Java 中的線程 sleep 和 wait 方法有以下區(qū)別:
- 調(diào)用 wait 方法的線程會(huì)放棄自己的鎖,并進(jìn)入等待狀態(tài),直到其他線程調(diào)用相同對(duì)象的 notify 或 notifyAll 方法來(lái)喚醒它。而調(diào)用 sleep 方法的線程則會(huì)暫時(shí)停止執(zhí)行,但保持所持有的鎖。
- wait 方法必須在同步代碼塊或同步方法中調(diào)用,而 sleep 方法可以在任何地方調(diào)用。
- sleep 方法是 Thread 類的靜態(tài)方法,而 wait 方法是 Object 類的方法。
- sleep 方法的參數(shù)是指定線程暫停的時(shí)間,單位是毫秒,而 wait 方法可以帶有一個(gè)超時(shí)參數(shù),指定線程等待的時(shí)間。
- sleep 方法是線程的靜態(tài)方法,可以在任何地方調(diào)用,并不需要持有對(duì)象鎖。而 wait 方法是 Object 類的實(shí)例方法,必須在持有對(duì)象鎖的情況下調(diào)用。
- 當(dāng)線程調(diào)用 sleep 方法時(shí),它會(huì)一直持有所持有的鎖,直到睡眠時(shí)間結(jié)束。而當(dāng)線程調(diào)用 wait 方法時(shí),它會(huì)釋放所持有的鎖,進(jìn)入等待狀態(tài),直到被喚醒。
總的來(lái)說(shuō),sleep 方法用于暫停當(dāng)前線程的執(zhí)行,不會(huì)釋放鎖,而 wait 方法用于線程間的通信,會(huì)釋放鎖。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!
正文完