Trong bài viết này, chúng ta sẽ tìm hiểu sự khác biệt giữa phương thức sleep() và wait() trong Java.
wait()
- Thuộc class Object
- Giải phóng lock (monitor) khi đang synchronized
- KHÔNG phải static method
- Chỉ được gọi từ ngữ cảnh synchronized (synchronized block/method)
- Có 3 overload: wait(), wait(long timeout), wait(long timeout, int nanoseconds)
sleep()
- Thuộc class Thread
- KHÔNG giải phóng lock khi đang synchronized
- LÀ static method
- Từ ngữ cảnh synchronized, KHÔNG cần gọi sleep()
- Có 2 overload: sleep(long millis), sleep(long millis, int nanos)