Voglio scrivere alcune stringhe su un file. Quindi, ho usato la classe BufferedWriter. Poiché molti thread tendono a scrivere in quel file, voglio sapere se scrivere e writeLine i metodi sono atomici o meno.Scrittore è un metodo atomico?
Inoltre, voglio che il programma scriva l'output su più file e 100 righe per file (ad esempio file.txt0, file.txt1, ...). Per esempio
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);
}
}
Qualcuno può aiutarmi? Se non sono atomici, come posso renderli atomici ed evitare la collisione?
+1. Buono a sapersi. – Mudassir
bel lavoro. Se voglio che scriva le uscite su più file, 100 linee per file, cosa posso fare? – orezvani
@emab, dipende. Dovrai modificare la tua domanda con maggiori dettagli su cosa (esattamente) vuoi fare (: – Marcelo