TEMA 6: API Java para Concurrencia de Alto Nivel

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TEMA 6: API Java para Concurrencia de Alto Nivel"

Transcripción

1 TEMA 6: API Java para Concurrencia de Alto Nivel CONTENIDO API Java 5 de Control de la Concurrencia Clases para Gestión de Variables Atómicas Clase java.concurrent.util.concurrent.semaphore Clase java.concurrent.util.concurrent.cyclicbarrier El API java.concurrent.util.concurrent.locks y la interfaz Condition Colas Contenedoras Sincronizados Pool de Threads: Concepto, utilidad y utilización BIBLIOGRAFÍA RECOMENDADA: [Göe06] Göetz et al. Java Concurrency in Practice, [Oaks04] Oaks & Wong. Java Threads. O`Reilly,

2 Generalidades Disponible a partir de Java 5 Mejoras respecto a los mecanismos previos de control de la concurrencia Generan menos sobrecarga en tiempo de ejecución Permiten controlar la e.m. y la sincronización a un nivel más fino Soporta primitivas clásicas como los semáforos o las variables de condición en monitores Añade nuevas primitivas y gestión de hilos mediante pools. 2

3 Qué paquetes usar? Disponible en los paquetes: java.util.concurrent java.util.concurrent.atomic java.util.concurrent.locks Cierres para control de e.m. Semáforos, Barreras Colecciones (clases contenedoras) concurrentes de acceso sincronizado Variables atómicas 3

4 El API java.util.concurrent.atomic Conjunto de clases que soportan programación concurrente segura sobre variables simples tratadas de forma atómica Clases: AtomicBoolean,AtomicInteger, AtomicIntegerArray,AtomicLong,AtomicLong Array,AtomicReference<V>, etc. OJO: No todos los métodos del API de estas clases soportan concurrencia segura. Sólo aquellos en los que se indica que la operación se realiza de forma atómica 4

5 import java.util.concurrent.atomic.*; class Hilo extends Thread { AtomicInteger cont = null; //el contador es entero atómico public Hilo(AtomicInteger c) {this.cont = c; public void run() { //se incrementa cont, retornando el valor previo int valor = this.cont.incrementandget(); System.out.println(valor); public class prueba_var_atomic { public static void main(string[] args) { AtomicInteger cnt = new AtomicInteger(0); for(int i=0; i<100; i++) { Hilo h = new Hilo(cnt); h.start(); 5

6 EJERCICIO Escribir una condición de carrera usando objetos AtomicInteger y verificar que se preserva la e.m. 6

7 La clase java.util.concurrent.semaphore Permite disponer de semáforos de conteo de semántica mínima igual a la estándar de Djikstra, o aumentada. Métodos principales: Semaphore (long permits) acquire(), acquire(int permits) release(), release (int permits) tryacquire(); varias versiones avalaiblepermits() 7

8 import java.util.concurrent.*; public class Bloqueo_Semaforo { public static void main(string[] args) throws InterruptedException { Semaphore sem = new Semaphore (2); sem.acquire(2); System.out.println("Semaforo actualizado a valor 0..."); System.out.println("y su estado es: "+sem.tostring()); System.out.println("Ahora intentamos adquirirlo..."); sem.tryacquire(); System.out.println("sin bloqueo por no conseguirlo"); System.out.println("Ahora intentamos adquirirlo..."); sem.tryacquire(3l, TimeUnit.SECONDS); System.out.println("tras esperar lo indicado sin consguirlo..."); sem.acquire(); System.out.println("Aquí no llegaremos nunca..."); 8

9 Protocolo de Control de E.M. con Semáforos // Thread A public void run(){ try { s.acquire(); catch (InterruptedException ex) { //Bloque de código a ejecutar en e.m s.release(); // Thread B public void run(){ try { s.acquire(); catch (InterruptedException ex) { //Bloque de código a ejecutar en e.m s.release(); //En el programa principal, hacer siempre Semaphore s = new Semaphore (1); 9

10 import java.util.concurrent.*; public class Tarea_concurrente extends Thread { Semaphore s; //referencia a un semaforo común a otros hilos public Tarea_concurrente(Semaphore param) {s = param; Ejemplo de Control de E.M. con Semáforos public void run () { for(;;) { try {s.acquire(); catch (InterruptedException e) { System.out.println("Hilo "+this.getname()+" entrando a seccion critica"); s.release(); System.out.println("Hilo "+this.getname()+" saliendo de seccion critica"); 10

11 EJERCICIO Descargue la clase Tarea_Concurrente.java y compile Descargue la clase Protocolo_em_semaphore.java, compile y ejecute. Diseñe, utilizando semáforos, un código cuyos hilos se interbloqueen:deadlocksem.java 11

12 Protocolo de Sincronización Inter-Hilos con Semáforos // Thread A public void esperarseñal(semaphore s) { try { s.acquire(); catch (InterruptedException ex) { // Thread B public void enviarseñal(semaphore s) { s.release(); //En el programa principal, hacer siempre Semaphore s = new Semaphore (0); 12

13 import java.util.concurrent.*; class HiloReceptor extends Thread { Semaphore sem; public HiloReceptor(Semaphore s){sem = s; public void run() {System.out.println("Hilo Receptor esta esperando la senal"); try{sem.acquire(); catch (InterruptedException e) { System.out.println("Hilo Receptor ha recibido la senal"); class HiloSenalador extends Thread { Semaphore sem; public HiloSenalador(Semaphore s){sem = s; public void run() {sem.release(); System.out.println("Hilo Senalador enviando senal..."); public class protocolo_sincronizacion_semaphore { public static void main(string[] args) { int v_inic_sem = 0; Semaphore s = new Semaphore(v_inic_sem); new HiloReceptor(s).start(); new HiloSenalador (s).start(); 13

14 EJERCICIO Utilizando las semáforos que sean necesarios, provea la sincronización por turno cíclico de tres hilos diferentes. Nombre sus ficheros HA.java, HB.java, Implante ahora una lector-escritor con semáforos. Nombre sus ficheros LE1.java, LE2.java, 14

15 La clase java.util.concurrent.cyclicbarrier Una barrera es un punto de espera a partir del cuál todos los hilos se sincronizan Ningún hilo pasa la barrera hasta que todos los hilos esperados llegan a ella Utilidad Unificar resultados parciales Inicio siguiente fase ejecución simultánea 15

16 Protocolo de Barrera // Codigo de Thread public Hilo extends Thread { P ublic Hilo (CyclicBarrier bar){ public void run() { try {int i = bar.await(); catch (BrokenBarrierException e) { catch (InterruptedException e) { //codigo a ejecutar cuando se abre barrera //En el programa principal, hacer siempre int numhilos = n; //numero de hilo que abren barrera CyclicBarrier Barrera = new CyclicBarrier (numhilos); new Hilo(Barrera).start(); 16

17 import java.util.concurrent.*; class Hilo extends Thread { CyclicBarrier barrera = null; public Hilo (CyclicBarrier bar) {barrera = bar; public void run() { try {int i = barrera.await(); catch (BrokenBarrierException e) { catch (InterruptedException e) { System.out.println("El hilo "+this.tostring()+" paso la barrera..."); public class UsaBarreras { public static void main(string[] args) { int numhilos = 3; CyclicBarrier PasoANivel = new CyclicBarrier (numhilos); new Hilo(PasoANivel).start(); 17

18 EJERCICIO Un vector de 100 enteros es escalado mediante f(v[i])=v[i] 2. Posteriomente el vector se suma entero en un único número. Escriba un programa en java multihebrado (utilizando barreras) que realice la tarea: vectsum.java 18

19 El API java.util.concurrent.locks Proporciona clases para establecer sincronización de hilos alternativas a los bloques de código sincronizado y a los monitores Clases e interfaces de interés: ReentrantLock: proprociona cerrojos de e.m. de semántica equivalente a synchronized, pero con un manejo más sencillo. LockSupport: proporciona primitivas de bloqueo de hilos que permiten al programador diseñar sus clases de sincronización y cerrojos propios Condition:es una interface, cuyas instancias se usan asociadas a locks. Implementan variables de condición y proporcionan una alternativa de sincronización a los métodos wait, notify y notifyall de la clase Object. 19

20 El API de la clase ReentrantLock Proporciona cerrojos reentrantes de semántica equivalente a synchronized. Métodos lock()-unlock() Método islocked() Método Condition newcondition() que retorna una variable de condición asociada al cerrojo 20

21 Protocolo de Control de E.M. con ReentrantLock Definir el recurso compartido donde sea necesario Definir un objeto c de clase ReentrantLock para control de la exclusión mutua. Acotar la sección crítica con el par c.lock() y c.unlock() 21

22 Protocolo de Control de E.M. con ReentrantLock class Usuario { private final ReentrantLock cerrojo = new ReentrantLock(); //... public void metodo() { cerrojo.lock(); try { //... cuerpo del metodo en e.m. finally {cerrojo.unlock() NOTA: Semántica equivalente a haber etiquetado el segmento de código crítico como synchronized. Útil para adaptar código concurrente antiguo a java 5. 22

23 EJERCICIOS Escribir un protocolo de e.m. con cerrojos ReentrantLock y guardarlo en emrl.java. Escribir una clase que lo use. Descargue otra vez nuestra vieja clase Cuenta_Banca.java Decida que código debe ser sincronizado, y sincronícelo con cerrojos ReentrantLock. La nueva clase será Cuenta_Banca_RL.java Escriba un programa multihebrado que use objetos de la clase anterior.llámelo Usa_Cuenta_Banca_Sync.java 23

24 La Interfaz Condition Proporciona variables de condición Se usa asociada a un cerrojo: siendo cerrojo una instancia de la clase ReentrantLock, cerrojo.newcondition() retorna la variable. Operaciones: await(), signal(), signalall() 24

25 import java.util.concurrent.locks.*; class buffer_acotado { final Lock cerrojo = new ReentrantLock(); //declara y crea un cerrojo final Condition nollena = cerrojo.newcondition(); //obtiene variables de condicion asociadas a cerrojo final Condition novacia = cerrojo.newcondition(); //para control de buffer lleno y vacio final Object[] items = new Object[100]; //array de objetos int putptr, takeptr, cont; //punteros de insercion y extracción public void put(object x) throws InterruptedException { cerrojo.lock(); try { while (cont == items.length) nollena.await(); //duerme a hilo productor si buffer lleno items[putptr] = x; if (++putptr == items.length) putptr = 0; ++cont; novacia.signal(); //despierta a hilo consumidor esperando presencia de datos en buffer finally {cerrojo.unlock(); public Object take() throws InterruptedException { cerrojo.lock(); try { while (cont == 0) novacia.await(); //duerme a hilo consumidor si buffer vacio Object x = items[takeptr]; if (++takeptr == items.length) takeptr = 0; --cont; nollena.signal(); //despierta a hilo productor esperando presencia de huecos en buffer return x; finally {cerrojo.unlock(); 25

26 EJERCICIOS Descargue y compile la clase buffer_acotado.java Qué diferencias tiene con la clase Buffer.java? (carpeta código Tema5) Implemente ahora hilos productores y consumidores que usen el buffer acotado y láncelos. Llame a su código prod_con_condition.java 26

27 Clases Contenedoras Sincronizadas A partir de Java 5 se incorporan versiones sincronizadas de las principales clases contenedoras Disponibles en java.util.concurrent Clases: ConcurrentHashMap, ConcurrentSkipLis tmap, ConcurrentSkipListSet, CopyOnW ritearraylist, y CopyOnWriteArraySet 27

28 Colas Sincronizadas A partir de Java 5 se incorporan diferentes versiones de colas, todas ellas sincronizadas Disponibles en java.util.concurrent Clases: LinkedBlockingQueue, ArrayBlockingQu eue, SynchronousQueue, PriorityBlock ingqueue,y DelayQueue 28

29 Caracterísicas Son seguras frente a hilos concurrentes Proporcionan notificación a hilos según cambia su contenido Son autosincronizadas. Pueden proveer sincronización (además de e.m.) por sí mismas Facilitan enormemente la programación de patrones de concurrencia como el P-S 29

30 import java.util.concurrent.*; public class Productor implements Runnable { LinkedBlockingQueue<Integer> data; Thread hilo; public Productor(LinkedBlockingQueue<Integer> l) { this.data = l; hilo = new Thread (this); hilo.start(); public void run() { try { for(int x=0;;x++) { data.put(new Integer(x)); //bloqueo de hilo si no hay hueco System.out.println("Insertando "+x); catch(interruptedexception e){ 30

31 import java.util.concurrent.*; public class Consumidor implements Runnable { LinkedBlockingQueue<Integer> data; Thread hilo; public Consumidor(LinkedBlockingQueue<Integer> l) { this.data = l; hilo = new Thread (this); hilo.start(); public void run() { try { for(;;) //bloquea a hilo consumidor si no hay datos System.out.println("Extrayendo "+data.take().intvalue()); catch(interruptedexception e){ 31

32 EJERCICIOS Descargue (subcarpeta colecciones seguras) Productor.java, Consumidor.java y ProdConColaBloqueante.java Ejecute. Cómo explica el comportamiento observado? Modificaciones: Aumente el número de ranuras de la cola Active varios productores y un consumidor Active un productor y varios consumidores 32

33 USO CORRECTO DE COLECCIONES Usamos colecciones a través de interfaces (usabilidad del código) Usar colecciones no sincronizadas no mejora mucho el rendimiento Problemas con esquema tipo productorconsumidor, use colas Minimice la sincronización explícita Si con una colección retarda sus algoritmos, distribuya los datos y use varias 33

34 POOL DE HILOS (Thread Pools) Hipótesis: Se desea implantar un servidor web. Enfoques posibles: Implantación de hilo simple Implantación multihebrada 34

35 PATRÓN DE SERVIDOR WEB DE HILO SIMPLE class ServidorWebHiloUnico { public static void main(string[] args) throws IOException { ServerSocket socket = new ServerSocket(80); //aquí servidor escuchando puerto 80 while (true) { Socket connection = socket.accept(); procesarsolicitud(connection); 35

36 PATRÓN DE SERVIDOR WEB MULTIHEBRADO class ServidorWebMultiHebrado { public static void main(string[] args) throws IOException { ServerSocket socket = new ServerSocket(80); //aquí servidor a la escucha en puerto 80 //un hilo por solicitud while (true) { final Socket connection = socket.accept(); Runnable task = new Runnable() { public void run() { procesarsolicitud(connection); ; new Thread(task).start(); //while 36

37 COMPARATIVA Servidor de hilo simple es ineficiente (hay mucha latencia) Servidor multihebrado mejora la situación Procesa múltiples solicitudes concurrentemente Mejora el rendimiento general Pero no está exento de problemas: Consumo de recursos (al crear los hilos) Estabilidad (número de peticiones elevado) Alternativa: Utilizar un pool de hilos y un ejecutor. 37

38 CONCEPTO DE THREAD POOL Un pool de hilos es un conjunto de hilos inactivos a la espera de trabajo Si el programa tienen una tarea que ejecutar, la pasa al pool, que asigna un hilo para ejecutarla Una vez acabada, el hilo vuelve a quedar a la espera de trabajo 38

39 EL PATRÓN DE THREAD POOL Antonio Tomeu El Lenguaje API Java para y la Concurrencia Programación de Concurrente Alto Nivel 39

40 Por qué usar un THREAD POOL? Crear un hilo es costoso (latencias). Creando un pool, creamos los hilos una vez y los reutilizamos varias. Permite un mejor diseño de programas, delegando la gestión del ciclo de vida de los hilos al pool Permite paralelizar las aplicaciones si se dispone de varios procesadores 40

41 La interfaz java.util.concurrent.executor Un ejecutor es un concepto genérico, modelado por esta interfaz Proporcionan un patrón de diseño para programas multihebrados, modelándolos como una serie de tareas. Abstracción de los hilos; se crea una tarea, y se pasa al ejecutor Java 5 proporciona dos clases de ejecutores (implementan la interfaz): Ejecutor de un Thread Pool Ejecutor de tareas programadas 41

42 La interfaz java.util.concurrent.executor package java.util.concurrent; public interface Executor{ public void execute (Runnable tarea) 42

43 La Clase ThreadPoolExecutor Sirve para crear un pool de hilos Implementa a ExecutorService El constructor: public ThreadPoolExecutor (int corepoolsize, int maximumpoolsize, long keepalivetime, TimeUnit unit, BlockingQueue<Runnable> workqueue); 43

44 public class Tarea implements Runnable { int numtarea; public Tarea(int n) {numtarea = n; public void run() {for (int i=1; i<100; i++){ System.out.println("Esta es la tarea numero: "+numtarea+ " imprimiendo "+i); 44

45 import java.util.concurrent.*; public class pruebathreadpool { public static void main(string[] args) { int int ntareas = Integer.parseInt(args[0]); tampool = Integer.parseInt(args[1]); ThreadPoolExecutor mipool = new ThreadPoolExecutor( tampool, tampool, 60000L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); Tarea[] tareas = new Tarea [ntareas]; for (int i=0; i<ntareas; i++) { tareas[i] = new Tarea(i); mipool.execute(tareas[i]); mipool.shutdown(); 45

46 UN SERVIDOR DE SOCKETS CON POOL DE THREADS import java.net.*; import java.io.*; import java.util.concurrent.*; public class SocketWebServerThreadPool implements Runnable { Socket enchufe; public SocketWebServerThreadPool(Socket s) {enchufe = s; public void run() { try{ BufferedReader entrada = new BufferedReader( new InputStreamReader(enchufe.getInputStream())); String datos = entrada.readline(); int j; int i = Integer.valueOf(datos).intValue(); for(j=1; j<=20; j++) System.out.println("Una tarea de servicio escribiendo el dato "+i); enchufe.close(); System.out.println("La tarea de servicio cierra su conexion..."); catch(exception e) {System.out.println("Error..."); //run 46

47 public static void main (String[] args) { int i; int puerto = 2001; int ntareas = Integer.parseInt(args[0]); int tampool = Integer.parseInt(args[1]); ThreadPoolExecutor mipool = new ThreadPoolExecutor( tampool, tampool, 60000L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); try{ ServerSocket chuff = new ServerSocket(puerto, 3000); while (true){ System.out.println("Esperando solicitud de conexion..."); Socket cable = chuff.accept(); System.out.println("Recibida solicitud de conexion..."); mipool.execute(new SocketWebServerThreadPool(cable)); //while catch (Exception e) {System.out.println("Error en sockets..."); //main 47

48 EJERCICIOS Descargar y compilar Tarea.java y pruebathreadpool.java Abrir el administrador de tareas Efectuar las siguientes pruebas: java pruebathreadpool n m Para n=200 y m creciente Implante ahora un protocolo productor-consumidor con un único buffer, y un pool de 8 tareas productoras y 6 consumidoras 48

} Antonio Tomeu API Java para Concurrencia 5 Antonio Tomeu API Java para Concurrencia 6 de Alto Nivel

} Antonio Tomeu API Java para Concurrencia 5 Antonio Tomeu API Java para Concurrencia 6 de Alto Nivel TEMA 6: API Java para Concurrencia de Alto Nivel CONTENIDO API Java 5 de Control de la Concurrencia Clases para Gestión de Variables Atómicas Clase java.concurrent.util.concurrent.semaphore Clase java.concurrent.util.concurrent.cyclicbarrier

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un

Más detalles

TEMA 5: Control de la Concurrencia en Java (API Estándar)

TEMA 5: Control de la Concurrencia en Java (API Estándar) TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 4 Profr: María del Carmen Cerón Garnica Alumno: Roberto

Más detalles

Hebras y Sincronización en Java

Hebras y Sincronización en Java Hebras y Sincronización en Java Jonathan Makuc http://jmakuc.ublog.cl Noviembre 2008 Tópicos: 1. Introducción a hebras en Java...2 2. Hebras a través del clase Thread...3 3. Hebras a través de la interfaz

Más detalles

PROGRAMACIÓN EN JAVA

PROGRAMACIÓN EN JAVA SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan

Más detalles

Java y JVM: programación concurrente

Java y JVM: programación concurrente Java y JVM: programación concurrente Adolfo López Díaz Escuela de Ciencias de la Computación e Informática. Universidad de Costa Rica Resumen: El lenguaje de programación Java proporciona, sin necesidad

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto

Más detalles

Programación Orientada a Eventos

Programación Orientada a Eventos Programación Orientada a Eventos Técnicas de Programación Santiago Pavón V:2012.03.13 Programas Secuénciales El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado

Más detalles

1 HILOS (THREADS) EN JAVA

1 HILOS (THREADS) EN JAVA 1 HILOS (THREADS) EN JAVA 1.1QUÉ ES UN THREAD La Máquina Virtual Java (JVM) es un sistema multihilo. Es decir, es capaz de ejecutar varios hilos de ejecución simultáneamente. La JVM gestiona todos los

Más detalles

Hilos. Índice. Copyright 2012-13 Dept. Ciencia de la Computación e IA All rights reserved.

Hilos. Índice. Copyright 2012-13 Dept. Ciencia de la Computación e IA All rights reserved. Índice 1 Creación de hilos... 2 2 Ciclo de vida y prioridades...3 2.1 Prioridades de los hilos... 4 2.2 Interrupción de un hilo...4 3 Sincronización de hilos... 5 3.1 Sincronización reentrante...6 4 Bloques

Más detalles

Concurrencia en Android LSUB, GYSC, URJC

Concurrencia en Android LSUB, GYSC, URJC Concurrencia en Android LSUB, GYSC, URJC Repaso de concurrencia en Java Crear un thread Instanciar un Thread, con el método run sobreescrito Intanciar un objeto que cumpla el interfaz Runnable y pasárselo

Más detalles

Programación Concurrente en Java

Programación Concurrente en Java Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006 Threads Extendiendo la clase java.lang.thread. public class PrThread extends

Más detalles

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Programación concurrente en Java. Breve introducción Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Concurrencia en Java Hilos de ejecución Clase Thread e interfaz Runnable Pausas Interrupciones

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

Java: Programación Multithread

Java: Programación Multithread Qué es un thread? Java: Programación Multithread Hasta el momento hemos desarrollado programas secuenciales con un único thread: en cualquier instante durante la ejecución de un programa hay un único punto

Más detalles

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Threads (hilos) Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Conceptos: Proceso (thread o hilo): es un programa en ejecución

Más detalles

Concurrencia en Java

Concurrencia en Java Concurrencia en Java Herramientas proporcionadas por Java La Máquina Virtual (JVM) Pedro Pablo Gómez Martín La clase Thread Clase principal con la que conseguir concurrencia. La llamada a su método start()

Más detalles

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez

UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos

Más detalles

Monitores Ing. Iván Medrano Valencia

Monitores Ing. Iván Medrano Valencia Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática Programación Concurrente y Distribuida Práctica 5 1. OBJETIVO. Ing. Iván Medrano Valencia En esta práctica, comprobaremos

Más detalles

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets

Sockets en Java. La Creatividad proviene de un conflicto de ideas. Uso de Sockets Uso de Sockets Este pequeño manual, le muestra cómo funciona el Socket Server para crear un pequeño servidor web que envía una página HTML a cualquier Navegador Web como Firefox, Internet Explorer, etc..

Más detalles

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor.

Luego lleve el cliente a otra máquina y ejecute desde ahí usando el nombre de la máquina del servidor. Ejemplos de sockets Los sockets son un mecanismo de comunicación entre procesos de muy bajo nivel, donde el usuario tiene que hacer muchas cosas, pero que siguen siendo muy importantes. En esta práctica

Más detalles

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos. Threads Un thread es un flujo de control secuencial dentro de un programa. A los threads también se los conoce como procesos livianos ó contextos de ejecución. Un thread es similar a un programa secuencial:

Más detalles

3.9 Patrón Distributed callback

3.9 Patrón Distributed callback 3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima

Más detalles

Modelo de Objetos Distribuidos

Modelo de Objetos Distribuidos Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo

Más detalles

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }

class Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida } REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)

Más detalles

CDI Exclusión mutua a nivel alto. conceptos

CDI Exclusión mutua a nivel alto. conceptos conceptos El concepto de usar estructuras de datos a nivel alto libera al programador de los detalles de su implementación. El programador puede asumir que las operaciones están implementadas correctamente

Más detalles

Multitarea en Java. Rafa Caballero - UCM

Multitarea en Java. Rafa Caballero - UCM Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single

Más detalles

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA

PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA PROGRAMACIÓN CLIENTE-SERVIDOR MEDIANTE SOCKETS EN JAVA Qué es la arquitectura cliente servidor? La arquitectura cliente-servidor es un modelo de aplicación distribuida en el que las tareas se reparten

Más detalles

Concurrencia en Java

Concurrencia en Java Concurrencia en Java Concurrencia y Distribución Programación Avanzada Posgrado en Ciencia e Ingeniería de la Computación, UNAM 1. El mecanismo de threads Una aplicación Java o applet puede contener secciones

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

Introducción a Java LSUB. 15 de enero de 2015 GSYC

Introducción a Java LSUB. 15 de enero de 2015 GSYC Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada

Más detalles

Repaso de las características más importantes de la programación Java y su adaptación a Android

Repaso de las características más importantes de la programación Java y su adaptación a Android Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y

Más detalles

dit UPM Tema 3: Concurrencia /ejercicios Análisis y diseño de software José A. Mañas 3.4.2014 http://jungla.dit.upm.es/~pepe/doc/adsw/index.

dit UPM Tema 3: Concurrencia /ejercicios Análisis y diseño de software José A. Mañas 3.4.2014 http://jungla.dit.upm.es/~pepe/doc/adsw/index. Análisis y diseño de software dit UPM Tema 3: Concurrencia /ejercicios José A. Mañas http://jungla.dit.upm.es/~pepe/doc/adsw/index.html 3.4.2014 ejercicio 1.1 programar una cuenta bancaria compartida 1.

Más detalles

Práctica 2: Java Remote Method Invocation (RMI)

Práctica 2: Java Remote Method Invocation (RMI) Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es

Más detalles

Cliente/Servidor en Java

Cliente/Servidor en Java Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno

Más detalles

Federico Peinado www.federicopeinado.es

Federico Peinado www.federicopeinado.es Federico Peinado www.federicopeinado.es Depto. de Ingeniería del Software e Inteligencia Artificial disia.fdi.ucm.es Facultad de Informática www.fdi.ucm.es Universidad Complutense de Madrid www.ucm.es

Más detalles

Programación Concurrente en Java

Programación Concurrente en Java Programación Concurrente en Java Curso 2006-2007 9/2/2007 Prog. Distribuida Bajo Internet Qué es la Programación Concurrente? Diseño basado en varias actividades independientes Conceptualmente se ejecutan

Más detalles

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Java RMI. Sistemas Distribuidos Rodrigo Santamaría + Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en

Más detalles

Introducción a los Threads Java

Introducción a los Threads Java 75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2014 Facultad de Ingeniería Universidad de Buenos Aires Introducción a los Threads Java Para crear un nuevo Thread Se extiende la clase

Más detalles

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI

PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI Héctor Pérez 2 MobileTracker: Especificación El computador de la torre de control ejecuta el servicio Follower que registra los

Más detalles

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE

CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE CURSO DE PROGRAMACIÓN EN JAVA J2EE 7 ÍNDICE PRÓLOGO... 13 APECTOS BÁSICOS DE JAVA... 15 1.1. LA MÁQUINA VIRTUAL JAVA... 15 1.2. EDICIONES JAVA... 16 1.3. ESTRUCTURA DE UN PROGRAMA JAVA... 16 1.4. EL MÉTODO

Más detalles

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA

EJEMPLOS PROGRAMACIÓN SOCKET - JAVA EJEMPLOS PROGRAMACIÓN SOCKET - JAVA 1.- Calcular el Cuadrado TCP En esta aplicación el cliente se conecta al servidor, para ello debe introducir la dirección IP del servidor y los parámetros sobre los

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

RMI [Remote Method Invocation]

RMI [Remote Method Invocation] RMI [Remote Method Invocation] Cuando utilizamos sockets, hemos de preocuparnos de cómo se transmiten físicamente los datos entre los extremos de una conexión (a nivel de bytes, ya que usamos los streams

Más detalles

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java

Java RMI Remote Method Invocation. Invocación Remota de Métodos en Java Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases

Más detalles

Manual del Protocolo XML-RPC de Mensajería Negocios

Manual del Protocolo XML-RPC de Mensajería Negocios Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer [email protected] Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la

Más detalles

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos

Más detalles

Introducción al lenguaje Java

Introducción al lenguaje Java Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno

Más detalles

Práctica 4: Java Remote Method Invocation (RMI)

Práctica 4: Java Remote Method Invocation (RMI) Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado

Más detalles

Object 1. Threads en Java

Object 1. Threads en Java Object 1 Threads en Java Introducción En este artículo voy a explicar cómo se usan los threads en Java (también traducidos como "hilos de ejecución"). La intención no es solamente explicar cuáles son las

Más detalles

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA

DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA DISEÑO DE UNA ARQUITECTURA CLIENTE/SERVIDOR MEDIANTE OBJETOS DISTRIBUIDOS EN JAVA José Luis Pastrana Brincones ([email protected]) Dpto. Lenguajes y Ciencias de la Computación. Universidad de Málaga

Más detalles

75-62 Técnicas de Programación Concurrente II 2004 java Threads

75-62 Técnicas de Programación Concurrente II 2004 java Threads 75-62 Técnicas de Programación Concurrente II 2004 java Threads FIUBA Ing. Osvaldo Clúa Bibliografía: tutorial de Java en http://java.sun.com Un buen libro (algo teórico) es Garg: Concurrent and Distributed

Más detalles

Programación Orientada a Objetos. Java: Excepciones

Programación Orientada a Objetos. Java: Excepciones Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España

Más detalles

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA [email protected].

Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta. Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA [email protected] Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun

Más detalles

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar

Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar Sockets en Java Prof. Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos situados en diferentes máquinas? Sockets

Más detalles

Las clases Java Socket y ServerSocket

Las clases Java Socket y ServerSocket Las clases Java Socket y ServerSocket Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática

Más detalles

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Hilos en Java A veces necesitamos que nuestro programa Java realice varias cosas simultáneamente. Otras veces tiene que realizar una tarea muy

Más detalles

Clases y Objetos. Informática II Ingeniería Electrónica

Clases y Objetos. Informática II Ingeniería Electrónica Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),

Más detalles

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid

Java RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.

Más detalles

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción

CORBA desde Java. Diego Sevilla Ruiz Sistemas Distribuidos. 1. Introducción CORBA desde Java Diego Sevilla Ruiz Sistemas Distribuidos Índice 1. Introducción 1 2. Primeros pasos 1 2.1. Fichero IDL................................... 1 2.2. Cliente......................................

Más detalles

Java Inicial (20 horas)

Java Inicial (20 horas) Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción

Más detalles

Programación Concurrente y Paralela. P(S) ; sección crítica P(S);

Programación Concurrente y Paralela. P(S) ; sección crítica P(S); 2.5.2 Monitores Los semáforos, a pesar de su sencillez de uso, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles

Más detalles

Secretos de la Programación Concurrente

Secretos de la Programación Concurrente Secretos de la Programación Concurrente Stuart Perez, Luis Castro Autómatas y Compiladores, Escuela de Ciencias de la Computación e Informática, San Pedro de Montes de Oca, Costa Rica [email protected]

Más detalles

Programación Concurrente. Curso Java 2012, 2013 Juan Manuel Fernández Peña

Programación Concurrente. Curso Java 2012, 2013 Juan Manuel Fernández Peña Programación Concurrente Curso Java 2012, 2013 Juan Manuel Fernández Peña Programación secuencial Hasta ahora se ha trabajado con programas secuenciales Se ejecuta paso a paso Son deterministas: si se

Más detalles

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones Programación Orientada a Objetos en Java Curso 2006-2007 Tema 6 Excepciones Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Qué son? Excepciones

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

Más detalles

2. Estructura de un programa en Java

2. Estructura de un programa en Java 24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso de Java POO: Programación orientada a objetos Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Concurrencia entre Procesos.

Concurrencia entre Procesos. Concurrencia entre Procesos. Sistemas Operativos Tema 3. 1 Procesamiento concurrente. Procesamiento concurrente: base de los sistemas operativos modernos (multiprogramados): Un conjunto de procesos que

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

1. Manejo de memoria estática 2. Manejo de memoria dinámica 1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo

Más detalles

Examen de Prácticas de Programación Ingeniería Informática

Examen de Prácticas de Programación Ingeniería Informática Examen de Prácticas de Programación Ingeniería Informática Septiembre 2007 1) (3.5 puntos) Se pretende desarrollar un programa para gestionar las reparaciones de coches realizadas en un garaje. Del análisis

Más detalles

Implementación de monitores POSIX

Implementación de monitores POSIX Implementación de monitores POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Programación concurrente: Problemática Presencia de condiciones de

Más detalles

Otras formas de Sincronización en Java

Otras formas de Sincronización en Java 75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2008 Facultad de Ingeniería Universidad de Buenos Aires Otras formas de Sincronización en Java java.util.concurrent Class Exchanger

Más detalles

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08

Tema 2. Técnicas básicas de POO. Técnicas de Programación - Curso 2007/08 Tema 2 Técnicas básicas de POO Técnicas de Programación - Curso 2007/08 Contenido Principios de POO Encapsulación Herencia Polimorfismo Ejemplos Técnicas básicas Delegación Uso de interfaces Interfaces

Más detalles

Práctica III: Streams, Readers y Writers

Práctica III: Streams, Readers y Writers Práctica III: Streams, Readers y Writers Objetivos En esta práctica vamos a aprender a utilizar Streams, Readers y Writers para realizar operaciones de entrada/salida desde programas escritos en el lenguaje

Más detalles

Tema 4. Gestión de entrada/salida

Tema 4. Gestión de entrada/salida Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada

Más detalles

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio

Más detalles

Metodología y Tecnología de la Programación

Metodología y Tecnología de la Programación Metodología y Tecnología de la Programación Curso 2008/09 Tema 7 Tipos de Datos Abstractos Temario 7.1 Concepto de Tipo de Datos Abstracto 7.2 Clasificación de Tipos de Datos Abstractos 7.3 Especificación

Más detalles

Mensajes. Interbloqueo

Mensajes. Interbloqueo CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya ([email protected]) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose

Más detalles

Práctica sobre compartición de instancias remotas.

Práctica sobre compartición de instancias remotas. Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta

Más detalles

PROGRAMACION DISTRIBUIDA

PROGRAMACION DISTRIBUIDA PROGRAMACION DISTRIBUIDA Distribución basada en el patrón proxy-servant Héctor Pérez 2 Distribución de aplicaciones basadas en objetos Objetivo: rediseño de una aplicación orientada a objetos para ser

Más detalles

Práctica 5: Servidor web concurrente en Java

Práctica 5: Servidor web concurrente en Java Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto

Más detalles

Estructura de datos tipo vector.

Estructura de datos tipo vector. Estructura de datos tipo vector. Hemos empleado variables de distinto tipo para el almacenamiento de datos (variables int, float, String) En esta sección veremos otros tipos de variables que permiten almacenar

Más detalles

1. Creación del repositorio

1. Creación del repositorio FACULTADE DE INFORMÁTICA Departamento de Computación Tecnología de la Programación 2008-2009 Ingeniería Informática Práctica 1: Subversion Introducción El objetivo de esta práctica es aprender a manejar

Más detalles

Sistemas Operativos Práctica 4

Sistemas Operativos Práctica 4 Sistemas Operativos Práctica 4 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que

Más detalles

Multitarea En Swing. Varios hilos trabajadores, también conocidos como hilos en segundo plano.

Multitarea En Swing. Varios hilos trabajadores, también conocidos como hilos en segundo plano. Multitarea En Swing 1.- Introducción. En las aplicaciones Java que usan Swing es particularmente importante manejar con cuidado la concurrencia. Una aplicación Java que usa Swing y que está bien desarrollada

Más detalles

Concurrencia: Exclusión mutua y Sincronización

Concurrencia: Exclusión mutua y Sincronización Concurrencia: Exclusión mutua y Sincronización Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer Concurrencia Múltiples aplicaciones Aplicaciones estructuradas

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Solución al Examen de Prácticas de Programación (Ingeniería Informática) Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa

Más detalles

Introducción - por qué usarlas?(1)

Introducción - por qué usarlas?(1) Excepciones en Java Introducción - por qué usarlas?(1) En el mundo de la programación hay algo que siempre ocurre: los errores en los programas. Pero qué sucede realmente después de que ha ocurrido el

Más detalles

Objetivo de aprendizaje del tema

Objetivo de aprendizaje del tema Computación II Tema 3. Identificadores, palabras clave y tipos de datos Objetivo de aprendizaje del tema Al finalizar el tema serás capaz de: Distinguir i entre modificadores d válidos y no válidos. Enumerar

Más detalles

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial

Examen de Redes - ETSIA 9 de septiembre - Primer Parcial Apellidos, Nombre: Grupo: Examen de Redes - ETSIA 9 de septiembre - Primer Parcial AUTORIZO a los profesores de la asignatura Redes de 2º curso de la ETSIA a publicar las calificaciones de los exámenes

Más detalles

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es: EXCEPCIONES EN JAVA Uno de los problemas más importantes al escribir aplicaciones es el tratamiento de los errores. Errores no previstos que distorsionan la ejecución del programa. Las excepciones de Java

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I

Más detalles

TEMA 3: Creación y Control De Threads en Java

TEMA 3: Creación y Control De Threads en Java TEMA 3: Creación y Control De Threads en Java CONTENIDO Revisión del Concepto de Hilo Técnicas de Creación de Hilos Ciclo de Vida. Control de Hilos Prioridades Hilos y Sistemas Operativos Ejecutores y

Más detalles