для создания одной длинной строки, созданной читателями.
Вы случайно не делаете это, чтобы создать свою "длинную строку"?
String string;
while(...)
string+=whateverComesFromTheSocket;
Если да, то измените его на
StringBuilder str = new StringBuilder(); //Edit:Just changed StringBuffer to StringBuilder
while(...)
str.append(whateverComesFromTheSocket);
String string = str.toString();
Строковые объекты неизменны, и когда вы делаете str + = "что-то", память перераспределяется, и str + "что-то" копируется в эту вновь выделенную область. Это дорогостоящая операция, и выполнить ее 51 000 раз крайне сложно.
StringBuffer и StringBuilder являются непостоянными братьями String и StringBuilder, поскольку несовместимость более эффективна, чем StringBuffer.