martes
mar112014
Concurrencia y ficheros.
¿Cuál es la salida por consola, y cuál la escrita en el fichero, de ejecutar el siguiente código fuente?
NOTA: no tiene gracia responder haciendo uso de un IDE. En el examen de certificación no te dejarán hacer uso del mismo.
Por favor, argumenten la respuesta.
package pruebas; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; /** * * @author Jaime Carmona Loeches * */ public class Escritor implements Runnable { private String nombreFichero = ""; @Override public void run() { System.out.println("Escritor ejecutando"); ejecutaLogica(0); } public Escritor(String nombreFichero) { System.out.println("Escritor inicializado"); this.nombreFichero = nombreFichero; } private synchronized void ejecutaLogica(int numEjecucion) { System.out.println(numEjecucion); FileWriter fw = null; BufferedWriter bw = null; try { File file = new File(nombreFichero); fw = new FileWriter(file); bw = new BufferedWriter(fw); for (int i = 0; i < 10; i++) { String texto = numEjecucion + ":" + i; bw.write(texto + "\n"); } cierraRecursos(fw, bw); numEjecucion++; if (numEjecucion < 2) ejecutaLogica(numEjecucion); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { } } private void cierraRecursos(FileWriter fw, BufferedWriter bw) { try { bw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * @param args * @throws InterruptedException */ public static void main(String[] args) { String nombreFichero = "out.txt"; Escritor escritor = new Escritor(nombreFichero); escritor.run(); } }
Reader Comments