Ну, по моему мнению, вы не должны закрывать поток, когда поток завершил свою работу.Просто оставьте его открытым и закройте, когда вся работа сделана.
Конечно, поскольку вы используете один и тот же поток, вам необходимо синхронизировать доступ к потоку для предотвращения конфликтов.Вам просто нужно использовать объект в качестве монитора.Например:
synchronized(monitor) {
monitor.wait(); // wait for signal
}
// read from input stream
synchronized(monitor) {
monitor.notify(); // release the next thread to start reading
}
Каждый поток будет запускать этот код.Затем основной поток вызовет уведомление для первого потока, чтобы он мог прочитать, а затем, если вы запустите другие потоки, они будут ждать завершения предыдущего.
Обратите внимание, что здесь я предполагаю, что вы этого не делаетехочу читать из файла параллельно.