阻塞有两种状态,blocked和waiting。本质上有什么区别,为什么要这样设计,如果简单用一种阻塞状态来处理是否合理?
wating与blocked状态, 两者的区别是: 进入waiting状态是线程主动的, 而进入blocked状态是被动的. 更进一步的说, 进入blocked状态是在同步(synchronized代码之外), 而进入waiting状态是在同步代码之内.
简单理解,一个是被阻塞(休息结束等待获取锁进行下一步工作)了,一个是在等待(休息中)。
网吧里面只有4台电脑(4核cpu);
waiting 就是一个在上网的哥们说,我休息一下,哥们你来耍一会儿,耍完了喊我,说着就让出了机子让其他人上;
blocked 就是一个在上网的哥们说,我休息一下,你们先耍,我一会儿就来,说着还是占着机子不让