Programación Concurrente en Java

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

Download "Programación Concurrente en Java"

Transcripción

1 Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006

2 Threads Extendiendo la clase java.lang.thread. public class PrThread extends Thread{ public PrThread( String s) { super(s); public final void run() { boolean sigue=true; for (int i=0; i<100 && sigue; i++) { try { System.out. println( getname()+":"+i); sleep(20); catch ( InterruptedException e) { System.out. println( getname()+" interrumpida"); sigue=false; public static final void main( final String[] args){ Thread p = new PrThread("mia"); p.start();

3 Threads Implementado el interfaz java.lang.runnable. public class PrRunnable implements Runnable { public final void run() { Thread hebra = Thread. currentthread(); boolean sigue=true; for (int i=0; i<100 && sigue; i++) { try { System.out. println( hebra. getname()+":"+i); hebra. sleep(20); catch ( InterruptedException e) { System.out. println( hebra. getname()+" interrumpida"); sigue=false; public static final void main(final String[] args) { Thread p = new Thread(new PrRunnable(),"mia"); p.start();

4 Ciclo de vida de una hebra Tras crear una hebra y se ejecuta el método start, la hebra puede estár: 1 En ejecución. 2 Suspendida: ha ejecutado sleep, join, wait.

5 Parar una hebra Usar el método interrupt public static void ex1() throws InterruptedException{ Thread h = new PrThread("1"); h.start(); Thread. sleep(100); h.interrupt(); System.out. println(h. isinterrupted()); Métodos Deprecated: stop, suspend, resume. Una hebra para cunado está Not Runnnable, ha ejecutado sleep, join, wait. Pueden lanzar InterruptedException, la hebra decide si para o sigue.

6 Esperamos a que una hebra acabe Método: join public static void ex2() throws InterruptedException { Thread h1 = new PrThread("1"); Thread h2 = new PrThread("2"); Thread h3 = new PrThread("3"); h1.start(); h2.start(); h3.start(); h1.join(); h2.join(); h3.join();

7 Esperamos a que una hebra acabe Método: join h3.start() h1.start() h2.start() h1.join() h2.join() h3.join()

8 Esperamos a que una hebra acabe Método: join h1.start() h2.start() 1 h1.start(): h1 se ejecuta. h3.start() h1.join() h2.join() h3.join()

9 Esperamos a que una hebra acabe Método: join h3.start() h1.start() h2.start() 1 h1.start(): h1 se ejecuta. 2 h2.start(): h2 se ejecuta. h1.join() h2.join() h3.join()

10 Esperamos a que una hebra acabe Método: join h3.start() h1.start() h2.start() 1 h1.start(): h1 se ejecuta. 2 h2.start(): h2 se ejecuta. 3 h3.start(): h3 se ejecuta. h1.join() h2.join() h3.join()

11 Esperamos a que una hebra acabe Método: join h1.start() h2.start() h3.start() h1.join() 1 h1.start(): h1 se ejecuta. 2 h2.start(): h2 se ejecuta. 3 h3.start(): h3 se ejecuta. 4 h1.join(): esperamos a que h1 pare. h2.join() h3.join()

12 Esperamos a que una hebra acabe Método: join h1.start() h2.start() h3.start() h1.join() h2.join() 1 h1.start(): h1 se ejecuta. 2 h2.start(): h2 se ejecuta. 3 h3.start(): h3 se ejecuta. 4 h1.join(): esperamos a que h1 pare. 5 h2.join(): esperamos a que h2 pare. h3.join()

13 Esperamos a que una hebra acabe Método: join h1.start() h2.start() h3.start() h1.join() h2.join() h3.join() 1 h1.start(): h1 se ejecuta. 2 h2.start(): h2 se ejecuta. 3 h3.start(): h3 se ejecuta. 4 h1.join(): esperamos a que h1 pare. 5 h2.join(): esperamos a que h2 pare. 6 h3.join(): esperamos a que h3 pare (no hace falta).

14 Cerrojos de objetos Cada objeto en Java tiene un cerrojo synchronized (obj) { /* */ El cerrojo puede abarcar a todo un método type method (...) { synchronized(this) { /* */ synchronized type method (...) { /* */ 1 2 3

15 Variables condición Qué ocurre si todos los métodos son synchronized?

16 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez

17 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor?

18 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor? las variables condición.

19 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor? las variables condición. Todos los objetos tienen los métodos wait(), notify() y notifyall().

20 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor? las variables condición. Todos los objetos tienen los métodos wait(), notify() y notifyall(). Un objeto con todos los métodos synchronized es un monitor con una sola variable condición.

21 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor? las variables condición. Todos los objetos tienen los métodos wait(), notify() y notifyall(). Un objeto con todos los métodos synchronized es un monitor con una sola variable condición. Qué hacemos si hay varias variables condición?

22 Variables condición Qué ocurre si todos los métodos son synchronized? sólo se puede ejecutar un método a la vez Qué falta para tener un monitor? las variables condición. Todos los objetos tienen los métodos wait(), notify() y notifyall(). Un objeto con todos los métodos synchronized es un monitor con una sola variable condición. Qué hacemos si hay varias variables condición? Todo monitor se puede hacer con una única variable condición, con pérdida de eficiencia: método notifyall().

23 Monitor puente Tiene dos variables condición: norte y sur. procedure permiso( sentido s) { if (s. equals( Sentido.sur)) { esps++; while ( numn > 0 cups>=maxcupo ) { wait(sur); esps--; nums++; cupn=0; if (espn>0) { cups ++; else { // el sentido norte [[similar]] procedure finpermiso( sentido s) { if (s. equals( Sentido.sur)) { nums--; singal( norte); else {//sentido norte [[similar...]]

24 Puente, versión Java fácil private int espn = 0, esps = 0; private int numn = 0, nums = 0; private int cupn = 0, cups = 0; private int maxcupo; public synchronized void permiso( Sentido s) throws InterruptedException{ if ( s.equals(sentido.sur) ) { esps ++; while ( numn > 0 cups >=maxcupo ) { wait(); esps --; nums++; if ( espn>0 ) { cups++; cupn=0; else { /* sentido Norte, complementario al anterior */ public synchronized void finpermiso( Sentido s) { if ( s.equals(sentido.sur) ) { nums--; else { numn--; notifyall();

25 Implementación de monitores 1 a idea: cada objeto es un semáforo Object norte, sur; public synchronized void permiso( Sentido s) { if ( s.equals(sentido.sur) ) { esps ++; while ( numn>0 cups>=maxcupo ) { sur.wait(); /*... */ else { espn ++; while ( nums>0 cupn>=maxcupo ) { norte.wait(); /*... */ Si el proceso se queda esperando en sur.wait(), no libera el objeto monitor: Se queda bloqueado!!

26 Implementación de monitores 1 Cada objeto es un semáforo.

27 Implementación de monitores 1 Cada objeto es un semáforo. 2 Por cada variable condición es necesario un objeto semáforo.

28 Implementación de monitores 1 Cada objeto es un semáforo. 2 Por cada variable condición es necesario un objeto semáforo. 3 Antes de esperar en un wait hemos de abandonar el monitor.

29 Implementación de monitores 1 Cada objeto es un semáforo. 2 Por cada variable condición es necesario un objeto semáforo. 3 Antes de esperar en un wait hemos de abandonar el monitor. 4 Es necesario un semáforo para entrar y salir del monitor.

30 Semáforos public final class Semaforo { String nombre; int s; public Semaforo(int inicial, String _nombre) { s=inicial; nombre=_nombre; // Semaforo constructor public synchronized void P() throws InterruptedException { while (s==0) { wait(); s--; public synchronized void V() { s++; notify();

31 Variables Condición I 1 Una variable condición básicamente es un semáforo. 2 Necesitamos también el semáforo del monitor para poder salir antes de un wait y entrár después. Semaforo mutex; public final void Wait() throws InterruptedException { mutex.v(); numespera ++; s.p(); mutex.p(); Nota: el método wait es final en la clase Object.

32 Variables Condición II public class VariableCondicion { int numespera; Semaforo s; Semaforo mutex; public VariableCondicion( Semaforo _mutex, String nombre) { s = new Semaforo(0,nombre); numespera = 0; mutex = _mutex; public synchronized final void Signal() { if (numespera>0) { numespera--; s.v();

33 Puente I public class Puente { VariableCondicion norte,sur; Semaforo mutex; private int espn = 0, esps = 0; private int numn = 0, nums = 0; private int cupn = 0, cups = 0; private int maxcupo; public void permiso( Sentido s) { mutex.p(); if ( s.equals(sentido.sur) ) { esps ++; while ( numn > 0 cups >=maxcupo ) { sur.wait(); esps --; nums++; if ( espn>0 ) { cups++; cupn=0; else { /* sentido Norte, caso simetrico al anterior */ mutex.v();

34 Puente II public void finpermiso( Sentido s) { mutex.p(); if ( s.equals(sentido.sur) ) { nums--; if (nums==0) {norte.signal();; else { numn--; if (numn==0) {sur.signal();; mutex.v(); public Puente(int cupo) { maxcupo = cupo; mutex = new Semaforo(1," mutex"); norte = new VariableCondicion(mutex," norte"); sur = new VariableCondicion(mutex," norte");

35 Puente III package simulacion. puente; public class Coche extends Thread { private Sentido sentido; private int id, tenpuente; private long horainicio; private Puente puente; public Coche (int i, Sentido s, int t, Puente p){ sentido = s; id = i; tenpuente = t; puente = p; public void run() { System.out. println("el coche "+id+" quiere pasar en sentido "+ sentido + ":" + SimulaPuente. tiemposimulacion()); puente. permiso( sentido); System.out. println("el coche "+id+" áest pasando en sentido "+ sentido + ":" + SimulaPuente. tiemposimulacion()); try { this. sleep( tenpuente*1000); catch ( InterruptedException e ) { puente. finpermiso( sentido); System.out. println("el coche "+id+" ha pasado en sentido "+ sentido + ":" + SimulaPuente. tiemposimulacion());

36 Puente IV public SimulaPuente( double tllegadan, double tllegadas, int tpuente, int tmax) 1{ Puente puente = new Puente(5); 2 GeneradorCoches generanorte = new GeneradorCoches( Sentido.norte, 3 tllegadan, 4 tpuente, tmax, , 6 puente); 7 GeneradorCoches generasur = new GeneradorCoches( Sentido.sur, 8 tllegadas, 9 tpuente, tmax, , 11 puente); 12 generanorte. start(); 13 generasur. start(); 14 horainicio = System. currenttimemillis(); 15 try { 16 generanorte.join(); 17 generasur.join(); 18 catch ( InterruptedException e ) { 19 // end of try-catch 20 21

37 Puente V package simulacion. puente; 1 class SimulaPuente { 2 private static int numusuario = 0; 3 private static long horainicio; 4 5 public synchronized static int sigusuario() { 6 numusuario ++; 7 return numusuario; 8 9 public static int tiemposimulacion() { 10 return (int)(( System. currenttimemillis() - horainicio)/( long)1000); public SimulaPuente( double tllegadan, double tllegadas, int tpuente, int tmax) 13 { /* Cuerpo de simula Puente */ public static void main (String[] args) { 16 SimulaPuente p = new SimulaPuente(2, 2, 1, 20); 17 // end of main () 18 19

38 Puente VI package simulacion. puente; 1 import soporte. Aleatorio; 2 public class GeneradorCoches extends Thread { 3 private Sentido sentido; 4 private double tllegadamediocoches; 5 private int tenpuente; 6 private int tmaxsimulacion; 7 private Aleatorio aleatorio; 8 private Puente puente; 9 public GeneradorCoches (Sentido stdo, double tll, int tp, int tm, int sm, Puente 10 p){ sentido = stdo; 11 tllegadamediocoches = tll; 12 tenpuente = tp; 13 tmaxsimulacion = tm; 14 aleatorio = new Aleatorio(sm); 15 puente = p; 16 17

39 Puente VII public void run() { 1 System.out. println(" Empezando el sentido "+ sentido); 2 do {// do-while ( tiempo < tmaxsimulacion ) 3 int sigcoche = aleatorio. poisson( tllegadamediocoches); 4 try { 5 this. sleep( sigcoche*1000); 6 7 catch ( InterruptedException e ) { 8 9 // end of try-catch 10 Coche coche = new Coche( SimulaPuente. sigusuario(), sentido, tenpuente, 11 p coche.start(); 12 while ( SimulaPuente. tiemposimulacion() < tmaxsimulacion );

40 Capturando InterruptedException I Semaforo public synchronized void P() throws InterruptedException{ while (s==0) { try { wait(); /* Si me interrumpen íaqu ocupamos el ásemforo, pero lazamos la óexcepcin */ catch ( InterruptedException e) { s--; throw e; s--;

41 Capturando InterruptedException II VariableCondicion public final void Wait() throws InterruptedException { 1 mutex.v(); 2 numespera ++; 3 try { 4 s.p(); 5 catch ( InterruptedException e) { 6 /* Se ha interrumpido un proceso esperando en esta ariable ócondicin. 7 * El ásemforo se queda sin ocupar (ver Semaforo.java), áhabr que decir 8que * esta hebra no áest esperando */ 9 numespera--; 10 throw e; try { 13 mutex.p(); 14 catch ( InterruptedException e) { 15 /* Se ha interrumpido un proceso que íhaba sido autorizado para entrar 16 * en la variable ócondicin. áhabr que liberar mutex y el ásemforo.*/ 17 numespera--; 18 s.v(); 19 mutex.v(); 20 throw e;

42 Capturando InterruptedException III public void permiso( Sentido s) throws InterruptedException { try { mutex.p();/* si interrumpen antes de entrar, no entramos y liberamos el monitor. */ catch ( InterruptedException e) { mutex.v(); throw e; if ( s.equals(sentido.sur) ) { esps ++; while ( numn > 0 cups >=maxcupo ) {sur.wait(); esps --; nums++; if ( espn>0 ) {cups++; cupn=0; else { espn ++; while ( nums > 0 cupn >=maxcupo ) {norte.wait(); espn --; numn++; if ( esps>0 ) {cupn++; cups=0; // end of else mutex.v();

43 Capturando InterruptedException IV public void finpermiso( Sentido s) throws InterruptedException { try { mutex.p();/* Si me interrumpen íaqu tengo que restaurar liberar el monitor y despertar a quien lo necesite*/ catch ( InterruptedException e) { if ( s.equals(sentido.sur) ) { nums--; if (nums==0) {norte.signal();; else { numn--; if (numn==0) {sur.signal();; mutex.v();

44 Capturando InterruptedException I Es mejor no interrumpir una hebra dentro del monitor, mejor esperar a que salga. Dentro del monitor tenemos una variable ie que indica si la hebra ha sido interrumpida.

45 Capturando InterruptedException II Es mejor no interrumpir una hebra dentro del monitor, mejor esperar a que salga. Dentro del monitor tenemos una variable ie que indica si la hebra ha sido interrumpida. mutex.p, Wait, no lanzan una excepciones.

46 Capturando InterruptedException III Es mejor no interrumpir una hebra dentro del monitor, mejor esperar a que salga. Dentro del monitor tenemos una variable ie que indica si la hebra ha sido interrumpida. mutex.p, Wait, no lanzan una excepciones.devolverán una excepción en caso de haberse producido. Si devuelven una excepción el monitor lanza esa excepción al final.

47 Capturando InterruptedException IV public void permiso( Sentido s) throws InterruptedException { InterruptedException ie=null; ie=mutex.p(ie); if ( s.equals(sentido.sur) ) { esps ++; while ( numn > 0 cups >=maxcupo ) { ie=sur.wait(ie); esps --; nums++; if ( espn>0 ) { cups++; cupn=0; else {// sentido Norte espn ++; while ( nums > 0 cupn >=maxcupo ) {ie=norte.wait(ie); espn --; numn++; if ( esps>0 ) {cupn++; cups=0; mutex.v(); if (ie!=null) { throw ie;

48 Capturando InterruptedException V public void finpermiso( Sentido s) throws InterruptedException { InterruptedException ie=null; ie=mutex.p(ie); if ( s.equals(sentido.sur) ) { nums--; if (nums==0) {norte.signal();; else {//Sentido norte numn--; if (numn==0) {sur.signal();; mutex.v(); if (ie!=null) { throw ie;

49 Capturando InterruptedException VI public final InterruptedException Wait( InterruptedException ie) { synchronized (this) { numespera ++; mutex.v(); ie=s.p(ie); ie=mutex.p(ie); return ie;

50 Capturando InterruptedException VII public synchronized InterruptedException P( InterruptedException ie) { while (s==0) { try { wait(); catch ( InterruptedException e) { ie=e; s--; return ie;

51 Capturando InterruptedException VIII public void run() { 1 try { 2 System.out. println("el coche "+id+" quiere pasar en sentido "+ sentido 3+ ":" try { 4 puente. permiso( sentido); 5 System.out. println("el coche "+id+" áest pasando en sentido "+ sentido 6 + sleep( tenpuente*1000); 7 8 catch ( InterruptedException e) { 9 System.out. println("el coche "+id+" ha sido interrumpido"); 10 finally { 11 puente. finpermiso( sentido); System.out. println("el coche "+id+" ha pasado en sentido "+ sentido + ":" 14 + catch ( InterruptedException e ) { // end of try-catch 17 18

52 Problemas, mejoras Las entradas y las salidas del monitor se hacen de forma expĺıcita.

53 Problemas, mejoras Las entradas y las salidas del monitor se hacen de forma expĺıcita. Reflexión en Java.

54 Problemas, mejoras Las entradas y las salidas del monitor se hacen de forma expĺıcita. Reflexión en Java. Control expĺıcito sobre las colas de procesos, variables condición priorizadas.

Programación Concurrente en Java: Threads

Programación Concurrente en Java: Threads Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid 7 de mayo de 007 Ejemplos de programación concurrente En un sistema operativo, diversos programas compiten por los

Más detalles

Programación Concurrente en Java: Threads. Ejemplos de programación concurrente. Luis Fernando Llana Díaz. 24 de abril de 2008

Programación Concurrente en Java: Threads. Ejemplos de programación concurrente. Luis Fernando Llana Díaz. 24 de abril de 2008 Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid de abril de 00 Ejemplos de programación concurrente En un sistema operativo, diversos programas compiten por los recursos

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

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 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Uso de excepciones en Java

Uso de excepciones en Java Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que

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

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

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

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en

Más detalles

Tema 2. El lenguaje de programación Java (Parte 1)

Tema 2. El lenguaje de programación Java (Parte 1) Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

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 1. Monitores en Java.

Práctica 1. Monitores en Java. Práctica 1 - Programación Concurrente 3º I.S. Pág: 1/15 Práctica 1. Monitores en Java. Programación Concurrente. 3º I.S. Dpto. Lenguajes y Sistemas Informáticos Escuela Técnica Superior de Ingeniería Informática

Más detalles

2. Indica cuál de las siguientes afirmaciones es cierta:

2. Indica cuál de las siguientes afirmaciones es cierta: Nombre:. Indica cuál de las siguientes afirmaciones es cierta: El diseño de un programa procedural está guiado por la división en tareas a realizar, mientras que el diseño orientado a objetos está dirigido

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

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.

Lo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK. Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

Programación concurrente en Java

Programación concurrente en Java Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en

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

Concurrencia en.net David Jesús Horat Flotats

Concurrencia en.net David Jesús Horat Flotats Concurrencia en.net David Jesús Horat Flotats ÍNDICE 1. Introducción n a.net 2. Sincronización n en.net 2.1 Contextos sincronizados 2.2 Método M Synchronized 2.3 Regiones de código c sincronizado 2.4 Sincronización

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

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

Pruebas de unidad con JUnit

Pruebas de unidad con JUnit Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro

Más detalles

CONCURRENCIA EN JAVA. Diseño de Sistemas Operativos Avanzados 2000/2001. Pedro Pablo Gómez Martín

CONCURRENCIA EN JAVA. Diseño de Sistemas Operativos Avanzados 2000/2001. Pedro Pablo Gómez Martín CONCURRENCIA EN JAVA Diseño de Sistemas Operativos Avanzados 2000/2001 Pedro Pablo Gómez Martín Concurrencia en Java 1 ÍNDICE ÍNDICE... 1 INTRODUCCIÓN... 3 CREAR UNA NUEVA HEBRA... 3 FINALIZACIÓN... 5

Más detalles

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?

2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase? PRTIIPNT: MPRS: H: xamen de iagnóstico Programador Java Instrucciones: Lea cada pregunta cuidadosamente y marque la(s) respuesta(s) que sean correctas. 1) ada la siguiente clase: 1. class rrayopy3{ 2.

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

Introducción a la Programación Orientada a Objetos

Introducción a la Programación Orientada a Objetos Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir

Más detalles

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos

Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Taller de Programación Estructurada en Java Tema 2. Fundamentos de la programación orientada a objetos Ingeniero en Computación José Alfredo Cobián Campos [email protected] Facultad de Ciencias

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

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

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

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

Laboratorio I Java Threads (Silberschatz Galvin)

Laboratorio I Java Threads (Silberschatz Galvin) Laboratorio I Java Threads (Silberschatz Galvin) Un proceso es un programa ejecutandose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos

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

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

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

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

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

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

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

Programación Java. Práctica 11. Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Alberto Larzabal Jesús Calleja Jon García

Programación Java. Práctica 11. Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Alberto Larzabal Jesús Calleja Jon García Práctica 11 Programación Java San Sebastián, mayo 1999 Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Alberto Larzabal Jesús Calleja Jon García Informática 2: Práctica nº 11 página 1 INDICE

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º 1. Ejercicio (1 punto) Dado el array A={8, 3, 7, 1, 4, 9, 5, 2, 6 Describir cual es el estado del array A después de cada paso principal del algoritmo: InsertionSort. {8, 3, 7, 1, 4, 9, 5, 2, 6 {3, 8,

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas

Más detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Programación Orientada a Objetos en Java

Programación Orientada a Objetos en Java Programación Orientada a Objetos en Java Curso 2006-2007 Tema 3 Clases y Objetos Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Clases y

Más detalles

Java en 2 horas. Rodrigo Santamaría

Java en 2 horas. Rodrigo Santamaría + Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión

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

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

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

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2

Llamada a métodos remotos (RMI). Curso 04/05. Tema 9. Departament d Informàtica. Universitat de València. 1. Introducción 2 Tema 9 Llamada a métodos remotos (RMI). Departament d Informàtica. Índice 1. Introducción 2 1.1. Cómo funciona RMI?.......................................... 2 2. Usando RMI 4 2.1. Fase de desarrollo:

Más detalles

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 UNIVERSIDAD DE SEVILLA E. T. S. INGENIERÍA INFORMÁTICA LENGUAJES Y SISTEMAS INFORMÁTICOS PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007 Qué es el análisis

Más detalles

dit Programación concurrente Sincronización condicional UPM

dit Programación concurrente Sincronización condicional UPM 20151028 dit UPM Programación concurrente Sincronización condicional Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons

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

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

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

PROGRAMACION CONCURRENTE Y DISTRIBUIDA. III.3 Concurrencia con Java: Sincronización

PROGRAMACION CONCURRENTE Y DISTRIBUIDA. III.3 Concurrencia con Java: Sincronización PROGRAMACION CONCURRENTE Y DISTRIBUIDA III.3 Concurrencia con Java: Sincronización J.M. Drake L.Barros 1 Recursos de Java para sincronizar threads Todos los objetos tienen un bloqueo asociado, lock o cerrojo,

Más detalles

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2

Lenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2 Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3

Más detalles

Tema 14: Excepciones

Tema 14: Excepciones Tema 14: Excepciones 0 Excepción Definición Las Excepciones son objetos que definen el estado de la aplicación cuando se producen situaciones anómalas. Son un mecanismo usado por muchos lenguajes de programación

Más detalles

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU

Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador

Más detalles

Threads o Hilos. Marco Besteiro y Miguel Rodríguez

Threads o Hilos. Marco Besteiro y Miguel Rodríguez En.NET, cuando se lanza una aplicación se crea un proceso y dentro de este proceso un hilo de ejecución o thread para el método Main. Es posible, a la vez que se ejecuta el método Main, que la aplicación

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

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java.

Práctica 3 mtp. metodoloxía e tecnoloxía da programación. Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. Práctica 3 mtp metodoloxía e tecnoloxía da programación Objetivos: Duración: Presentar detalles básicos sobre la sintaxis del lenguaje de programación Java. 1 semana 1.- Identificadores Los identificadores

Más detalles

Técnicas Avanzadas de Testing Automatizado

Técnicas Avanzadas de Testing Automatizado Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados

Más detalles

Universidad ORT - Arquitectura de Software. Requisitos

Universidad ORT - Arquitectura de Software. Requisitos Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación

Más detalles

Primer Parcial Septiembre 5 de 2009

Primer Parcial Septiembre 5 de 2009 Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar

Más detalles

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas: Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Facultad de Informática Sistemas Operativos Examen parcial, 11 de mayo de 2002 SOLUCIONES Calificación 1 2 3 4 5 1 (2 5 puntos)

Más detalles

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS 1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para

Más detalles

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1

JavaScript. Contenidos. Introducción El lenguaje Validación de formularios. Programación en Internet 2005-2006. DLSI - Universidad de Alicante 1 Departamento de Lenguajes y Sistemas Informáticos JavaScript Programación en Internet Curso 2005-2006 Contenidos Introducción El lenguaje Validación de formularios DLSI - Universidad de Alicante 1 Introducción

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

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

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas

Más detalles

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; }

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; } Qué son los threads? Todos los programadores conocen lo que es un proceso, la mayoría diría que es un programa en ejecución: tiene un principio, una secuencia de instrucciones y tiene un final. Un thread

Más detalles

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática

Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Contenidos Generación de excepciones.

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

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