面试题: 多线程 (代码死锁)
1. 线程控制方法 wait notify notifyAll 为什么不写在Thread类中,写在了Object类中
原因锁的问题造成的, 锁肯定是不确定的对象,方法必须锁对象调用,因此方法定义在Object类中,保证所有对象都可以调用
2. wait方法和sleep方法区别
线程状态,分成等待和休眠 (阻塞)
wait 是Object类非静态
sleep 是Thread静态方法
wait 必须是锁对象调用
sleep 方法中随时静态调用
wait 需要被唤醒
sleep 时间到了自动醒来
wait 方法释放同步中的锁,被唤醒后,必须从新获取锁才能继续执行
sleep 不会释放同步中的锁
|
|