Судя по комментариям выше, я думаю, что решил эту проблему.
Я просто не уверен, что это не значит, что я загружаю весь файл каждый раз:
long charsRead = 0;
while(keepRunning)
{
URL url = new URL(finalUrlString);
URLConnection connection = url.openConnection();
InputStreamReader stream = new InputStreamReader(connection.getInputStream());
BufferedReader reader = new BufferedReader(stream);
long skipped = reader.skip(charsRead);
String line = reader.readLine();
if(line != null)
{
charsRead += line.length() + 1;
process(line);
}
reader.close();
}
Этот фрагмент кода работает внутри собственного потока. Я использую метод процесса, чтобы заполнить вектор объектов, генерируемых при разборе каждой строки.
Другой фрагмент кода в другом потоке смотрит на этот вектор - читает объекты - и очищает его.
Конечно, этот поток и другой поток синхронизируются вокруг этого экземпляра вектора.