如何从多个线程写入文件

时间:2015-09-12 17:50:38

标签: java multithreading filereader filewriter

我有问题。我需要创建9个文件,每个文件都从线程名称调用。每个文件将被称为1.txt,2.txt,3.txt等。每个文件将填充一个与文件名对应的符号(1.txt文件是" 1")。每个文件应为100行,每行长度为100个字符。这项工作必须执行执行线程和I \ O.当使用多个线程时,我需要在生成的文件super.txt中读取这些文件的内容。

我的代码:

public class CustomThread extends Thread {

    Thread t;
    String threadName;

    CustomThread(String threadName) {
        this.threadName = threadName;
    }

    @Override
    public void run() {
        if (t == null) {
            t = new Thread(this);
        }
        add(threadName);
    }

    public void add(String threadName) {
        File f = new File(threadName + ".txt");

        if (!f.exists()) {
            try {
                f.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                System.out.println("File does not exists!");
            }
        }

        FileWriter fw = null;
        try {
            fw = new FileWriter(f);
            for (int i = 0; i < 100; i++) {
                for (int j = 0; j < 100; j++) {
                    fw.write(threadName);
                }
                fw.write('\n');
            }

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("File does not exists!");
        }
    }
}

我的主要人物:

public class Main {
    public static void main(String[] args) {

        CustomThread T1 = new CustomThread("1");
        T1.start();

        CustomThread T2 = new CustomThread("2");
        T2.start();

    }
}

第一个问题。我需要,在循环中制作线程。看看我的主要内容:我创建

CustomThread T1 = new CustomThread("1");
T1.start();

但是,我想在周期中创建9个文件。这该怎么做 ?

第二个问题。我需要从多个线程中写入每个文件。

第三个问题。如何从结果文件中的多个线程写入该文件的五个内容?

1 个答案:

答案 0 :(得分:1)

  

我想在周期中创建9个文件。怎么做?

使用循环

for (int i = 1; i <= 9; i++) {
   new CustomThread("" + i).start();
}
  

我需要从多个线程中写入每个文件。

你是怎么做到的?在启动线程之前打开文件,并在使用它们时将其锁定。

  

如何从结果文件中的多个线程写入该文件的五个内容?

你能改一下这个问题吗?