这个也是我前面一直是这么认为的, 直到最近看了一个Stackoverflow上的问题, 才对这个问题有了比较深入的理解.
实现一个有界队列
试想我们要试想一个有界的队列....但是我们都知道notify实际上我们是没法决定到底通知谁的(都是从等待集合里面选一个). 那这个还有什么存在的意义呢?...C1想来拿, C2, C3 就在get里面等着
C1开始执行, 获取1, 然后调用notify 然后退出
如果C1把C2唤醒了, 所以P2 (其他的都得等.)只能在put方法上等着....P2 这个时候唤醒了P3, P3发现队列是满的,没办法,只能等它变为空. 这时候, 没有别的调用了, 那么现在这三个线程(P3, C2,C3)就全部变成suspend了.也就是死锁了....2021 年发生的 10 件技术大事!!
23 种设计模式实战(很全)
Spring Boot 保护敏感配置的 4 种方法!
再见单身狗!