wait( )和sleep ( )方法的区别
- 相同点:
(1)这两个方法都能进入阻塞状态 - 不同点
(1)sleep()方法是Thread类中的静态方法,而wait()方法是Object类中的方法;
(2)sleep()方法可以在任何方法调用,而wait()方法只能在同步代码块或同步方法中使用(即使用synchronized关键字修饰的);
(3)当这两种方法都在同步代码块或同步方法中使用时,sleep()方法不能释放同步监视器,而wait()方法则会释放同步监视器。
描述notifyAll方法,都可以唤醒等待池中的那些线程
notifyAll是针对指定对象里面的所有线程执行唤醒操作,指定对象一旦唤醒成功,则会立即加入线程的资源争夺中去。
描述synchronized修饰静态方法和非静态方法的区别
Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”;
Synchronized修饰静态方法,实际上对该类方法加锁,俗称“类锁”。