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