使用MutliThreading在文本文件中读写

时间:2019-01-15 13:31:49

标签: java multithreading executorservice

我创建了以下应用程序来测试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());

        }

    });


}

}

0 个答案:

没有答案