PipedOutputStream в HashMap для потоков - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть несколько потоков, которые работают в фоновом режиме.Они имеют общий HashMap.Можно ли хранить (безопасно) PipedOutputStream там?

У меня есть следующий сценарий:

Когда первый фоновый поток получает определенное событие, он должен начать читать текстовые данные из огромного файлав буфер.

Второй фоновый поток (они независимы) должен как-то уведомляться, а затем читать данные из буфера (канала) по мере его поступления.

Поскольку все потоки могут обращаться к HashMap, можно ли хранить там все потоки?

Ответы [ 2 ]

0 голосов
/ 01 декабря 2011

HashMap не синхронизирован, поэтому вы должны добавить свою логику или использовать синхронизированную коллекцию.Что касается потоков, то есть, если вы можете записывать только в OutputStream и читать только из InputStream, у вас не будет проблем с записью из одного потока и чтением из другого.

0 голосов
/ 01 декабря 2011

Вы можете использовать ConcurrentHashMap.Я не вижу особого смысла в использовании здесь Pipe, так как файлы будут прочитаны операционной системой до того, где вы все равно читаете.

...