阻塞原理:
当我们请求某个已经被其他线程持有的对象锁,或者调用某个对象的wait方法时,当前线程(请求者或调用者)会阻塞,原理大概如下:每个对象其实都有个队列管理竞争该对象的所有线程对象,线程阻塞(直接调用这个对象的wait方法或者请求该对象的锁)其实就是把对象加入到该队列;另一个拥有锁的线程释放锁或者调用notify就是把阻塞队列中线程唤醒。
wait阻塞可以响应中断,等待获得内置锁阻塞不可响应中断(Lock设置lockInterruptibly除外)。
阻塞原理:
当我们请求某个已经被其他线程持有的对象锁,或者调用某个对象的wait方法时,当前线程(请求者或调用者)会阻塞,原理大概如下:每个对象其实都有个队列管理竞争该对象的所有线程对象,线程阻塞(直接调用这个对象的wait方法或者请求该对象的锁)其实就是把对象加入到该队列;另一个拥有锁的线程释放锁或者调用notify就是把阻塞队列中线程唤醒。
wait阻塞可以响应中断,等待获得内置锁阻塞不可响应中断(Lock设置lockInterruptibly除外)。