Я сделал 2 класса Продюсер и Потребитель.Класс Producer создает потоки и помещает элементы в очередь блокировки, а потребительский класс также создает потоки, которые отбирают элементы из очереди блокировки.
Теперь мне было интересно вот что.Должен ли я определить свою очередь блокировки в Producer или в классе Consumer?Или это должен быть одноэлементный объект, который определяется как производителем, так и потребителем?
Если я определю только один класс, то я могу получить доступ к очереди блокировки, вызвав метод этого класса из другого класса.Этот вид инкапсулирует структуру данных очереди блокировки в этом классе, и мы получаем доступ к этой структуре данных только с помощью методов.Но я считаю, что при вызове метода через него один класс зависит от другого.
Хотя, если я создаю одиночную очередь блокировки, объект очереди блокировки будет разделен между двумя классами.Но я считаю плохой практикой делиться коллекциями между классами, чтобы пользователи знали, как использовать коллекции в каждом классе.Я не уверен, действительно ли это плохая практика.
Пожалуйста, укажите, какой путь лучше?Спасибо за вашу помощь.