我创建了以下应用程序来测试ExecutorService
。我有一个Reader
线程从文件读取。字符串read(最多2行)被循环传递到writer
任务,该任务负责将字符串打印到控制台上。我将此任务提交到executor
线程执行任务的pool
worker
。与仅使用一个线程/一个进程单独进行读取和写入相比,如何检查此方法是否确实更快?
public class ClientTest {
ExecutorService e= Executors.newFixedThreadPool(2);
static ClientTest c = new ClientTest();
public static void main(String args[])
{
Thread reader=new Thread() {
public void run() {
BufferedReader br=null;
int n=0;
try {
br = new BufferedReader(new FileReader("C:\\Users\\JOHHNY\\Desktop\\Sample.txt"));
StringBuilder sb = new StringBuilder();
String line = br.readLine();
while (line != null) {
sb.append(line);
sb.append("\n");
n++;
if(n%2==0) {
c.write(sb);
Thread.sleep(1000);
sb.setLength(0);
}
line = br.readLine();
}
}
catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
finally {
try {
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
reader.start();
}
private void write(final StringBuilder sb) {
e.execute(new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName()+" "+sb.toString());
}
});
}
}