Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Hilos
running
start
Dead
Priorización
Java soporta un mecanismo simple denominado
planificación por prioridad fija (fixed priority
scheduling).
Clicker
Priorización Ejemplo
HiloPri
Sincronización
Ejemplo: productor y consumidor
Dos procesos
Hilo 1 Hilo 2
Produce información
Productor Consumidor
Sincronización Ejemplo
Productor
Sincronización Ejemplo
Consumidor
Contenedor
No sincronizado!!!
Sincronización Ejemplo
Contenedor
Sincronizado
Sincronización Ejemplo
Contenedor
Sincronización Ejemplo
ProductorConsumidorTest
Flujos
Los programas en java realizan las operaciones de entrada / salida a
través de flujos.
Para gestionar teclado, pantalla, impresora, conexión a red un buffer
en memoria o un archivo en disco.
Object
OutputStream InputStream
Reader Writer
RandomAccessFile
Flujos - InputStream
Clase Función Parámetros del constructor
ByteArrayInputStream Permite usar un espacio de El intermedio del que extraer los bytes.
almacenamiento intermedio de Espacio de almacenamiento.
memoria como un InputStream
Como una fuente de datos. Se conecta al
objeto FilterInputStream para proporcionar
un interfaz útil.
File-InputStream Para leer información de un archivo Un String que represente al nombre del
archivo o un objeto File o FileDescriptor.
Como una fuente de datos. Se conecta al
objeto FilterInputStream para proporcionar
una interfaz útil.
Flujos - InputStream
Sequence-InputStream Convierte dos o mas objetos Dos objetos InputStream o una Enumeratio
InputStream en un InputStream para contener objetos inputStream.
único. Como una fuente de datos,
Se conecta al objeto FilterInputStream
para proporcionar una interfaz útil.
if(linea==null) break;
System.out.println(linea);
}//try
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
}//while
}//main
}//TestFile01
Ejemplo 2 - Lectura y copiado de
archivos de texto
import java.io.*;
public class TestFile02 {
public static void main(String[] args) {
String nombreOrigen = Teclado.readLine("Nombre de archivo origen : ");
String nombreDestino = Teclado.readLine("Nombre de archivo destino: ");
FileReader fr = null;
FileWriter fw = null;
try {
fr = new FileReader(nombreOrigen);
fw = new FileWriter(nombreDestino);
}catch(FileNotFoundException x) {
System.err.println("Error: archivo no existe");
System.err.println(x.getMessage());
System.exit(0);
}//catch
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
Ejemplo 2 - Lectura y copiado de
archivos de texto
BufferedReader in = new BufferedReader(fr);
BufferedWriter bw = new BufferedWriter(fw);
PrintWriter out = new PrintWriter(bw);
while(true) {
try {
String linea = in.readLine();
if(linea==null) break;
out.println(linea);
}//try
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
}//while
out.flush();
out.close();
}//main
}//TestFile02
Ejemplo 3 - Lectura y copiado de
archivos binarios
import java.io.*;
public class TestFile03 {
public static void main(String[] args) {
String nombreOrigen = Teclado.readLine("Nombre de archivo origen : ");
String nombreDestino = Teclado.readLine("Nombre de archivo destino: ");
FileInputStream fr = null;
FileOutputStream fw = null;
try {
fr = new FileInputStream(nombreOrigen);
fw = new FileOutputStream(nombreDestino);
}catch(FileNotFoundException x) {
System.err.println("Error: archivo no existe");
System.err.println(x.getMessage());
System.exit(0);
}//catch
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
Ejemplo 3 - Lectura y copiado de
archivos binarios
BufferedInputStream in = new BufferedInputStream(fr);
BufferedOutputStream out = new BufferedOutputStream(fw);
byte[] arr = new byte[2048]; // Tamaño del buffer asumido
try {
while(true) {
int tamaño = in.read(arr,0,arr.length);
if(tamaño==-1) break;
out.write(arr,0,tamaño);
}
out.flush();
out.close();
}catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
}//main
}//TestFile03
Ejemplo 4 - Lectura de un archivo de la
red y copiado en el equipo local
import java.io.*;
import java.net.*;
public class TestFile04 {
public static void main(String[] args) {
String nombreOrigen = Teclado.readLine(“url: ");
String nombreDestino = Teclado.readLine("Nombre de archivo destino: ");
URL fr = null;
FileOutputStream fw = null;
try {
fr = new URL(nombreOrigen);
fw = new FileOutputStream(nombreDestino);
}catch(FileNotFoundException x) {
System.err.println("Error: archivo no existe");
System.err.println(x.getMessage());
System.exit(0);
}//catch
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
Ejemplo 4 - Lectura de un archivo de la
red y copiado en el equipo local
try {
BufferedInputStream in = new BufferedInputStream(fr.openStream());
BufferedOutputStream out = new BufferedOutputStream(fw);
byte[] arr = new byte[2048]; // Tamaño del buffer asumido
while(true) {
int tamaño = in.read(arr,0,arr.length);
if(tamaño==-1) break;
out.write(arr,0,tamaño);
}//while
out.flush();
out.close();
}//try
catch(IOException x) {
System.err.println("Error de IO: " + x.getMessage());
System.exit(0);
}//catch
}//main
}//TestFile04
Ejemplo 5 - Lectura y escritura de
objetos como Objects
import java.io.*;
public class TestFile07 {
public static void main(String[] args) {
Rectangulo[] r = new Rectangulo[2];
r[0] = new Rectangulo(10,20);
r[1] = new Rectangulo(5,30);