Представьте себе сценарий "производитель-потребитель", поток А создает записи, их использует один-много других потоков.
Для этого я передаю несколько записей каждому потоку-потребителю.
Делатьделаю это, я спрашиваю себя, дешевле ли это (первичный в смысле процессинга, вторичный в памяти):
- , чтобы предоставить каждому потоку потребителя отдельный экземпляр
HashMap
.После передачи Map
одному потребителю будет создан новый экземпляр Map
, который будет использоваться для передачи следующих произведенных записей в следующий поток
или
- использовать один
ConcurrentHashMap
и создать Iterator
для каждого потока потребителя и после передачи Iterator
потоку, очищающему Map
- так, чтобы каждый Итератор содержал свое собственное представление нижележащего Map
.
Что вы думаете?Возможен ли более или менее общий ответ?
Или он сильно зависит от некоторых переменных, таких как количество записей, потоков и т. Д.
РЕДАКТИРОВАТЬ: Или я должен использовать какой-либо другой тип данныхструктура, которая может лучше решить такие проблемы?