①最明显的一个区别是,wait方法需要搭配synchronized关键字进行使用.而sleep方法的使用不需要
②wait是一个Object类的方法,sleep是Thread类的一个静态方法
方法 | 说明 |
public static void sleep(long millis) throws interruptedException |
使当前正在执行的线程以指定的毫秒数暂停(暂时停止执行),具体取决于系统定时器和调度程序的精度和准确性。 线程不会丢失任何显示器的所有权。 |
public final void wait( ) throws interruptedException |
导致当前线程等待,直到另一个线程调用该对象的notify()方法或notifyAll()方法。 |
③他们所使用的目的本质是不同的,sleep方法是对于单个线程来说,简单的让其休眠\暂停运行一定的时间.时间一到而恢复运行,继续执行下面的代码.
而对于wait来说,更偏向于不同线程间的通信合作的一个工具,因为wait方法一般要搭配notify或者notifyAll方法来使用.需要两个线程之间构成一定的联系.