sleep与wait的区别


    1 使用对象区别
        sleep的调用者是Thread,wait的调用者是所有实例对象
2 使用位置的区别 sleep在任何位置都能使用,而wait/notify/notifyAll需要在"synchronized"同步代码块中使用(wait需要一个监视器monitor)
3 是否释放资源
    wait方法释放锁(如果线程拥有某个或某些对象的同步锁,那么在调用了wait()后,这个线程就会释放它持有的所有同步资源,而不限于这个被调用了wait()方法的对象)
    sleep方法不释放锁(sleep可以在没有锁的地方使用,佐证了sleep不会释放锁)



synchronized存在位置与monitor
  静态方法:Class
  静态代码块:Class(也可以是定义的其他Class)
  非静态方法:this
  非静态代码块:this或者其他对象的实例
 
posted @ 2020-02-16 11:36  Draymond  阅读(399)  评论(0编辑  收藏  举报