緩衝區是一塊特定的內存區域。開闢緩衝區的目的是通過緩解應用程序 上下層之間的性能差異,提高系統的性能。(上層系統的性能優於下層系統,採用緩衝區可以減少上層系統等待下層系統的時間。)
以上結構中,上層系統可以不用等待下層系統真實的接受全部數據,就可以返回操作,加快了上層組件的處理速度,從而提升了系統整體性能。
緩衝最常用的場景就是提高I/O的速度,jdk中不少的I/O組件都提供了緩衝功能。比如使用FileWriter的時候進行文件寫操作的代碼如下:
package com.smf.buffer;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
/**
* @author 作者SMF:
* @version 創建時間:2018年10月15日 下午4:36:42
* 類說明
*/
public class BufferTest {
public static void main (String[] args) {
noBuffer();
Buffer();
}
//不使用緩衝區
public static void noBuffer(){
try {
int CIRCLE=10000;
Writer writer = new FileWriter(new File("test.txt"));
long begin = System.currentTimeMillis();
for(int i=0;i<CIRCLE;i++){
writer.write(i);
}
System.out.println("花費時間:"+(System.currentTimeMillis()-begin));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//使用緩衝區
public static void Buffer(){
try {
int CIRCLE=10000;
Writer writer = new FileWriter(new File("test.txt"));
@SuppressWarnings("resource")
BufferedWriter bufferedWriter = new BufferedWriter(writer);//緩衝區默認大小爲8k
long begin = System.currentTimeMillis();
for(int i=0;i<CIRCLE;i++){
bufferedWriter.write(i);
}
System.out.println("花費時間:"+(System.currentTimeMillis()-begin));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
下面是運行結果:
可以看出,使用緩衝極大的提高了程序運行的效率。
以上簡單的講述了緩衝的原理和簡單應用,更多使用和介紹敬請期待