Мы работаем над уменьшением задержки и повышением производительности процесса, написанного на Java, который потребляет данные (строки xml) из сокета с помощью метода readLine() BufferedReader. Данные разделяются концом разделителя строк (\n), и каждая строка может иметь переменную длину (6KBits - 32KBits). Наш код выглядит так:
Socket sock = connection;
InputStream in = sock.getInputStream();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(in));
...
do
{
String input = inputReader.readLine();
// Executor call to parse the input thread in a seperate thread
}while(true)
Итак, у меня есть пара вопросов:
- Будет ли метод inputReader.readLine() возвращаться сразу после обращения к символу \n или он будет ждать, пока буфер не будет заполнен?
- Есть ли более быстрый сбор данных из гнезда, чем с помощью BufferedReader?
- Что происходит, когда размер входной строки меньше размера буфера приема Socket?
- Что происходит, когда размер строка ввода больше размера буфера приема Socket?
Я собираюсь (медленно) с Java IO-библиотеками, поэтому любые указатели очень ценятся.
Спасибо!