- sleep和wait的区别主要有
- 1.sleep是Object类的方法, wait是Thread类的方法
- 2.sleep必须指定休眠时间, 他有时间限制, wait则没有时间限制, 他必须靠notify或者notifyAll唤醒
- 3.最重要的一点, sleep的时候, 线程不会释放锁, 而wait的线程会释放锁
- 多线程中有一个死锁问题, 死锁是指同步中嵌套有同步, 每个同步都有单独的一个同步锁, 好比两层门, 有两把锁. 代码中就是两层同步代码块, 外层使用A锁, 内层使用B锁, 另一条路径是外层使用B锁, 内层使用A锁, 两条线程, 一个持有A锁想进B锁的同步代码块, 另一个持有B锁想进A锁的同步代码块, 两条线程都不释放锁, 又都不能运行下一步, 所以形成一种假死状态. 解决方法就是不要在同步中嵌套同步, 同步只使用唯一的一个锁.
|
|