本篇是为了解析IOUtils类的准备篇
1.
private void needNewBuffer(int newcount) {
if (currentBufferIndex < buffers.size() - 1) {
//Recycling old buffer
filledBufferSum += currentBuffer.length;
currentBufferIndex++;
currentBuffer = buffers.get(currentBufferIndex);
} else {
//Creating new buffer
int newBufferSize;
if (currentBuffer == null) {
newBufferSize = newcount;
filledBufferSum = 0;
} else {
newBufferSize = Math.max(
currentBuffer.length << 1,
newcount - filledBufferSum);
filledBufferSum += currentBuffer.length;
}
currentBufferIndex++;
currentBuffer = new byte[newBufferSize];
buffers.add(currentBuffer);
}
}

这篇博客主要探讨了Apache Commons IO库中ByteArrayOutputStream的实现细节,包括何时及如何扩展内部缓冲区,以及在多线程环境下的同步策略。文章提到了在特定情况下如慢速输入流或网络限制时使用此类的优势,并详细解释了`synchronized`关键字在确保线程安全方面的作用。
最低0.47元/天 解锁文章
1909

被折叠的 条评论
为什么被折叠?



