sleep和wait的区别?
因为wait方法需要在Synchronized块或者Synchronized方法中执行,所以我们先来复习一下什么是Synchronized
Synchronized:synchronized 关键字,代表这个方法加锁,相当于不管哪一个线程(例如线程A),运行到这个方法时,都要检查有没有其它线程B(或者C、 D等)正在用这个方法(或者该类的其他同步方法),有的话要等正在使用synchronized方法的线程B(或者C 、D)运行完这个方法后再运行此线程A,没有的话,锁定调用者,然后直接运行。它包括两种用法:synchronized 方法和 synchronized 块。
说正题,sleep和wait的区别都有什么?
- 存在的位置不同:sleep()方法是线程(Thread)中的方法,wait()是Object类中的方法
- 使用的方式不用:
- sleep():在指定的毫秒数内让当前正在执行的线程休眠(暂停执行).该方法中传入一个单位为毫秒的时间参数,在调用该方法时当前线程会暂停。(API)
- wait():在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。也就是说在调用notify() 方法或 notifyAll() 方法前,当前线程并不会执行。(API)
- wait(