sleep()和wait()的区别?
1、Thread.sleep()的作用是指定当前线程睡眠一定时间;obj.wait()是让拿到obj对象锁的那个线程进入等待状态,直到这个线程被obj.notifyAll()或obj.notify()唤醒,然后继续执行下面的代码。 其中:obj.notifyAll()是唤醒所有正在等待的线程;obj.notify()是唤醒其中一个正在等待的线程。
2、sleep()是Thread类的静态方法;wait()是Object类的实例方法。
3、wait()方法必须在同步代码块或同步方法中;而sleep()方法没有这个限制。
4、obj.wait()方法调用后会释放对象obj的锁,可以让其他线程获得obj的锁,并执行同步代码块或方法中的代码;sleep()方法调用后不会释放锁,只能沉睡指定时间后才能执行后面代码。