相关概念
锁池
每个对象(不是类)有一个锁池,锁池存放的是想要获取该对象的锁但该锁已被其他线程占有的阻塞状态的线程。(有点点复杂哈~~)
比如说老公正在开车送我回家,我相当于获得了老公这个对象的锁。如果此刻小三刚好也想要借用一下我的老公,那小三就只能进入我老公的锁池了,因为我的老公已经被我锁定啦。
等待池
线程调用wait()后,会释放该对象的锁,同时进入该对象的等待池,进入等待池的对象不会去竞争该对象的锁。
notify和notifyAll的区别
- notfiyAll会让所有处于等待池的线程全部进入锁池去竞争获取锁的机会。
- notify随机选一个处于等待池中的线程进入锁池去竞争获取锁的机会。