В реальной жизни я столкнулся с интересной проблемой. Я упростил проблему здесь:Вопросы, связанные с многопользовательской версией
Дизайн двух методов A() и метода B(). Каждый метод можно рассматривать как получение атома элемента (A или B). Химическое соединение A [N] B [M] требует N атомов А и M атомов B.
Прежде чем мы найдем N атомов А и M атомов B, каждый вызов A() и B() будет заблокирован. Когда мы достигнем N атомов А и M атомов B, будут возвращены первые вызовы N A() и первые вызовы M B(). Например, если я вызываю вызовы N + 2 A() и следую вызовам M B(), будут возвращены первые вызовы N A() и все вызовы M B(). Будет заблокировано 2 A() звонка?
Как решить эту проблему? Я использую Java.
Это звучит, как вам нужно использовать класс 'CountDownLatch'. Он дает вам методы 'countDown()' и 'wait()'. – Gray
Это противоположность того, что нужно, нет? CountDownLatch будет блокироваться, пока его счетчик не достигнет 0. – Pragmateek