Является ли писатель атомарным методом?

Я хочу записать несколько строк в файл. Итак, я использовал класс BufferedWriter . Поскольку многие потоки имеют тенденцию записывать в этот файл, я хочу знать, являются ли методы write и writeLine атомарными или нет.

Кроме того, я хочу, чтобы программа записывала вывод в несколько файлов и по 100 строк в файл (, скажем, file.txt0,file.txt1,... ). Например

public class Main {
    static ExecutorService exec = Executors.newFixedThreadPool(5);
    BufferedWriter bw;
    public class myWriter implements Runnable {
        String str;
        myWriter (String str) {
            this.str = str;
        }
        public void run() {
            bw.write(str);
            bw.writeLine();
        }
    }
    public static void main(String[] args) {
        bw = new BufferedWriter(new  FileWriter("train.txt"));
        for (String arg: args)
            exec.execute(new myWriter(arg));
        exec.awaitTermination(100000, TimeUnit.MILLISECONDS);
    }
}

Кто-нибудь может мне помочь? Если они не атомарны, как я могу сделать их атомарными и избежать столкновения?

6
задан orezvani 1 March 2012 в 08:49
поделиться