นี่เป็นคำถามที่ง่ายมากเพราะทั้งสองวิธีนี้มีการใช้ที่แตกต่างกันโดยสิ้นเชิง
ข้อแตกต่างที่สำคัญคือการรอการปลดล็อคหรือจอภาพในขณะที่ sleep ไม่ได้ทำการปลดล็อคหรือมอนิเตอร์ใด ๆ ในขณะที่รอ รอใช้สำหรับการสื่อสารระหว่างเธรดในขณะที่ใช้โหมดสลีปเพื่อหยุดการทำงานชั่วคราว
นี่เป็นเพียงคำอธิบายที่ชัดเจนและพื้นฐานถ้าคุณต้องการมากกว่านั้นอ่านต่อ
ในกรณีที่wait()เมธอดเธรดอยู่ในสถานะรอและจะไม่กลับมาโดยอัตโนมัติจนกว่าเราจะเรียกnotify()เมธอด (หรือnotifyAll()ถ้าคุณมีมากกว่าหนึ่งเธรดในสถานะรอและคุณต้องการปลุกเธรดเหล่านั้นทั้งหมด) และคุณต้องซิงโครไนซ์หรือล็อควัตถุหรือล็อคคลาสเพื่อเข้าถึงwait()หรือnotify()หรือnotifyAll()วิธีการ และอีกสิ่งหนึ่งwait()วิธีนี้ใช้สำหรับการสื่อสารระหว่างเธรดเนื่องจากถ้าเธรดเข้าสู่สถานะรอคุณจะต้องใช้เธรดอื่นเพื่อปลุกเธรดนั้น
แต่ในกรณีsleep()นี้เป็นวิธีการที่ใช้ในการพักกระบวนการสักสองสามวินาทีหรือเวลาที่คุณต้องการ เพราะคุณไม่จำเป็นต้องยั่วยุใด ๆnotify()หรือnotifyAll()วิธีการเพื่อให้ได้ด้ายที่กลับมา หรือคุณไม่ต้องการเธรดอื่นเพื่อโทรกลับเธรดนั้น เช่นถ้าคุณต้องการบางสิ่งบางอย่างจะเกิดขึ้นหลังจากไม่กี่วินาทีเช่นในเกมหลังจากที่ผู้ใช้เปิดคุณต้องการให้ผู้ใช้รอจนกว่าคอมพิวเตอร์จะเล่นแล้วคุณสามารถพูดถึงsleep()วิธีการ
และอีกหนึ่งความแตกต่างที่สำคัญที่มักถูกถามบ่อยๆในการสัมภาษณ์: sleep()เป็นของThreadชั้นเรียนและwait()เป็นของObjectชั้น
เหล่านี้ล้วนเป็นความแตกต่างระหว่างและsleep()wait()
และมีความคล้ายคลึงกันระหว่างทั้งสองวิธี: พวกเขาทั้งคู่ได้รับการตรวจสอบคำสั่งดังนั้นคุณต้องลองจับหรือโยนเพื่อเข้าถึงวิธีการเหล่านี้
ฉันหวังว่านี่จะช่วยคุณได้