Java - вопрос многопоточности и файлов - PullRequest
0 голосов
/ 21 июня 2011

У меня есть один текстовый файл, который должен быть прочитан двумя потоками, но мне нужно сделать чтение последовательно. Пример: поток 1 получает блокировку и читает первую строку, блокировка свободна. Поток 2 получает блокировку и читает строку 2 и так далее. Я думал о том, чтобы использовать один и тот же буферный ридер или что-то подобное, но я не уверен в этом Заранее спасибо!

EDITED

Будет 2 класса каждый с потоком. Эти 2 класса будут читать один и тот же файл.

Ответы [ 2 ]

3 голосов
/ 21 июня 2011

Вы можете заблокировать BufferReader, как говорите.

Я бы предупредил вас, что производительность, вероятно, будет хуже, чем при использовании только одного потока.Однако вы можете сделать это как упражнение.

1 голос
/ 21 июня 2011

Возможно, было бы более производительным читать файл построчно в одном потоке и передавать полученные строки ввода в пул потоков через очередь, такую ​​как ConcurrentLinkedQueue , если вы хотите гарантировать порядок Наименьшее из начала обработки строк файлов. Гораздо проще реализовать, и нет конкуренции за класс, который вы используете для чтения файла.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...