Sleep和wait都是线程调度的关键字,它们的区别如下:
1、wait是Object类的一个方法,它可以在任何对象上调用,而sleep是Thread类的一个静态方法,只能在Thread对象上调用。
2、wait方法需要传入一个锁对象作为参数,以确保在同一时刻只有一个线程可以进入该方法,而sleep方法不需要传入锁对象。
3、wait方法会使当前线程暂停执行并释放锁,然后等待其他线程唤醒它,而sleep方法会使当前线程暂停指定的时间(以毫秒为单位),然后再恢复执行。
4、当线程调用wait方法时,它会放弃当前持有的锁,因此不会阻止其他线程对同一资源进行访问,而当线程调用sleep方法时,它会暂时释放锁,但仍然可以被其他线程访问。