Я хочу записать несколько строк в файл. Итак, я использовал класс 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);
}
}
Кто-нибудь может мне помочь? Если они не атомарны, как я могу сделать их атомарными и избежать столкновения?