のソース コードを読んでいるときに、「どの教科書にもある古典的な 2 条件アルゴリズムArrayBlockingQueue
」を使用していることを説明するコメントを見つけました。
/*
* Concurrency control uses the classic two-condition algorithm
* found in any textbook.
*/
/** Main lock guarding all access */
private final ReentrantLock lock;
/** Condition for waiting takes */
private final Condition notEmpty;
/** Condition for waiting puts */
private final Condition notFull;
従来の 2 条件 (notEmpty、notFull) アルゴリズムを使用するのはなぜですか?