首页 > 解决方案 > 使用 MutliThreading 在文本文件中读取和写入

问题描述

我创建了以下应用程序来测试ExecutorService. 我有一个Reader从文件中读取的线程。读取的字符串(最多 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());

        }

    });


}

}

标签: javamultithreadingexecutorservice

解决方案


推荐阅读