Quiero escribir algunas cadenas en un archivo. Entonces, utilicé BufferedWriter clase. Como muchos hilos tienden a escribir en ese archivo, quiero saber si escribir y writeLine los métodos son atómicos o no.¿Es el escritor un método atómico?
Además, quiero que el programa escriba la salida en varios archivos y 100 líneas por archivo (digamos archivo.txt0, archivo.txt1, ...). Por ejemplo
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);
}
}
¿Alguien me puede ayudar? Si no son atómicos, ¿cómo puedo hacerlos atómicos y evitar la colisión?
+1. Bueno saber. – Mudassir
buen trabajo. Si quiero que escriba las salidas en varios archivos, 100 líneas por archivo, ¿qué puedo hacer? – orezvani
@emab, eso depende. Deberá editar su pregunta con más detalles de lo que (exactamente) desea hacer (: – Marcelo