} Antonio Tomeu API Java para Concurrencia 5 Antonio Tomeu API Java para Concurrencia 6 de Alto Nivel
|
|
- Catalina Lozano Camacho
- hace 6 años
- Vistas:
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, Antonio Tomeu API Java para Concurrencia 1 de Alto Nivel 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. Antonio Tomeu API Java para Concurrencia 2 de Alto Nivel 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 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 Antonio Tomeu API Java para Concurrencia 3 de Alto Nivel Antonio Tomeu API Java para Concurrencia 4 de Alto Nivel 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; //se incrementa cont, retornando el valor previo int valor = this.cont.incrementandget(); System.out.println(valor); EJERCICIO Escribir una condición de carrera usando objetos AtomicInteger y verificar que se preserva la e.m. 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(); Antonio Tomeu API Java para Concurrencia 5 Antonio Tomeu API Java para Concurrencia 6 de Alto Nivel 1
2 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() 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..."); Antonio Tomeu API Java para Concurrencia 7 de Alto Nivel Antonio Tomeu API Java para Concurrencia 8 de Alto Nivel Protocolo de Control de E.M. con Semáforos // Thread A try s.acquire(); catch (InterruptedException ex) //Bloque de código a ejecutar en e.m s.release(); // Thread B 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 Ejemplo de Control de E.M. con Semáforos public class Tarea_concurrente extends Thread Semaphore s; //referencia a un semaforo común a otros hilos public Tarea_concurrente(Semaphore param) s = param; 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"); Antonio Tomeu API Java para Concurrencia 10de Alto Nivel 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 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); Antonio Tomeu API Java para Concurrencia 11de Alto Nivel Antonio Tomeu API Java para Concurrencia 12de Alto Nivel 2
3 class HiloReceptor extends Thread Semaphore sem; public HiloReceptor(Semaphore s)sem = s; System.out.println("Hilo Receptor esta esperando la senal"); trysem.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; 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(); 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, Antonio Tomeu API Java para Concurrencia 13 de Alto Nivel Antonio Tomeu API Java para Concurrencia 14 de Alto Nivel 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 Protocolo de Barrera // Codigo de Thread public Hilo extends Thread P ublic Hilo (CyclicBarrier bar) 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(); Antonio Tomeu API Java para Concurrencia 15de Alto Nivel Antonio Tomeu API Java para Concurrencia 16de Alto Nivel class Hilo extends Thread CyclicBarrier barrera = null; public Hilo (CyclicBarrier bar) barrera = bar; try int i = barrera.await(); catch (BrokenBarrierException e) catch (InterruptedException e) System.out.println("El hilo "+this.tostring()+" paso la barrera..."); 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 public class UsaBarreras public static void main(string[] args) int numhilos = 3; CyclicBarrier PasoANivel = new CyclicBarrier (numhilos); new Hilo(PasoANivel).start(); Antonio Tomeu API Java para Concurrencia 17 de Alto Nivel 18 3
4 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. 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 Antonio Tomeu API Java para Concurrencia 19de Alto Nivel Antonio Tomeu API Java para Concurrencia 20de Alto Nivel Protocolo de Control de E.M. con ReentrantLock 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() 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. Antonio Tomeu API Java para Concurrencia 21de Alto Nivel Antonio Tomeu API Java para Concurrencia 22de Alto Nivel EJERCICIOS La Interfaz Condition 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 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() Antonio Tomeu API Java para Concurrencia 23de Alto Nivel Antonio Tomeu API Java para Concurrencia 24de Alto Nivel 4
5 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(); 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 Antonio Tomeu API Java para Concurrencia 25de Alto Nivel Antonio Tomeu API Java para Concurrencia 26de Alto Nivel Clases Contenedoras Sincronizadas Colas 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 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 Antonio Tomeu API Java para Concurrencia 27de Alto Nivel Antonio Tomeu API Java para Concurrencia 28de Alto Nivel 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 public class Productor implements Runnable LinkedBlockingQueue<Integer> data; Thread hilo; public Productor(LinkedBlockingQueue<Integer> l) this.data = l; hilo = new Thread (this); hilo.start(); 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) Antonio Tomeu API Java para Concurrencia 29de Alto Nivel Antonio Tomeu API Java para Concurrencia 30de Alto Nivel 5
6 public class Consumidor implements Runnable LinkedBlockingQueue<Integer> data; Thread hilo; public Consumidor(LinkedBlockingQueue<Integer> l) this.data = l; hilo = new Thread (this); hilo.start(); try for(;;) //bloquea a hilo consumidor si no hay datos System.out.println("Extrayendo "+data.take().intvalue()); catch(interruptedexception e) 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 Antonio Tomeu API Java para Concurrencia 31de Alto Nivel Antonio Tomeu API Java para Concurrencia 32de Alto Nivel 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 POOL DE HILOS (Thread Pools) Hipótesis: Se desea implantar un servidor web. Enfoques posibles: Implantación de hilo simple Implantación multihebrada Antonio Tomeu API Java para Concurrencia 33de Alto Nivel Antonio Tomeu API Java para Concurrencia 34de Alto Nivel class ServidorWebHiloUnico public static void main(string[] args) throws IOException ServerSocket socket = new ServerSocket(80); //aquí servidor escuchando puerto 80 PATRÓN DE SERVIDOR WEB DE HILO SIMPLE while (true) Socket connection = socket.accept(); procesarsolicitud(connection); 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() procesarsolicitud(connection); ; new Thread(task).start(); //while Antonio Tomeu API Java para Concurrencia 35de Alto Nivel Antonio Tomeu API Java para Concurrencia 36de Alto Nivel 6
7 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. 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 Antonio Tomeu API Java para Concurrencia 37de Alto Nivel Antonio Tomeu API Java para Concurrencia 38de Alto Nivel EL PATRÓN DE THREAD POOL 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 Antonio Tomeu El Lenguaje API Java para y la Concurrencia Programación 39 de Concurrente Alto Nivel Antonio Tomeu API Java para Concurrencia 40 de Alto Nivel La interfaz java.util.concurrent.executor 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 package java.util.concurrent; public interface Executor public void execute (Runnable tarea) Antonio Tomeu API Java para Concurrencia 41de Alto Nivel Antonio Tomeu API Java para Concurrencia 42de Alto Nivel 7
8 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); public class Tarea implements Runnable int numtarea; public Tarea(int n) numtarea = n; for (int i=1; i<100; i++) System.out.println("Esta es la tarea numero: "+numtarea+ " imprimiendo "+i); Antonio Tomeu API Java para Concurrencia 43de Alto Nivel Antonio Tomeu API Java para Concurrencia 44de Alto Nivel public class pruebathreadpool public static void main(string[] args) int ntareas = Integer.parseInt(args[0]); int tampool = Integer.parseInt(args[1]); ThreadPoolExecutor mipool = new ThreadPoolExecutor( tampool, tampool, 60000L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>()); UN SERVIDOR DE SOCKETS CON POOL DE THREADS import java.net.*; import java.io.*; public class SocketWebServerThreadPool implements Runnable Socket enchufe; public SocketWebServerThreadPool(Socket s) enchufe = s; Tarea[] tareas = new Tarea [ntareas]; for (int i=0; i<ntareas; i++) tareas[i] = new Tarea(i); mipool.execute(tareas[i]); mipool.shutdown(); 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 Antonio Tomeu API Java para Concurrencia 45de Alto Nivel Antonio Tomeu API Java para Concurrencia 46de Alto Nivel 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 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 Antonio Tomeu API Java para Concurrencia 47de Alto Nivel Antonio Tomeu API Java para Concurrencia 48de Alto Nivel 8
TEMA 6: API Java para Concurrencia 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 detallesProgramació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 detallesEXCLUSIÓ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 detallesMONITORES 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 detallesOtras 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 detallesTEMA 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 detallesTEMA 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 detallesJava y JVM: programación concurrente. Adolfo López Díaz
Java y JVM: programación concurrente Adolfo López Díaz JVM Máquina virtual Ambiente de programación virtualizado Permite la ejecución de programas Java ejecutables multiplataforma Programación concurrente
Más detallesIntroducció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 detallesdit 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 detallesTema 6. Threads: programas multitarea
Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos
Más detallesExamen 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 detallesBENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS
Más detallesProgramación concurrente
Programación concurrente Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Programación concurrente
Más detallesLenguaje Java. Sesión 5: Hilos. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
Lenguaje Java Sesión 5: Hilos Índice Creación de hilos y ciclo de vida Sincronización de hilos Bloques vigilados Interbloqueos Interfaz Lock Variables atómicas y colecciones Ejecutores y pools Java Hilos-2
Más detallesProgramació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 detallesEjemplo. 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 detallesUPM Concurrencia en Java
UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta
Más detallesCAPÍTULO 3. PROCESOS VS. HILOS
CAPÍTULO 3. PROCESOS VS. HILOS 3.1 Primitivas de sincronización en Java Java no tiene semáforos como primitivas de sincronización. Sin embargo, proporciona otras primitivas diferentes con las cuales sí
Más detallesProgramación Concurrente y de Tiempo Real Guión de prácticas 4: Creación y control de Hilos en Java
Programación Concurrente y de Tiempo Real Guión de prácticas 4: Creación y control de Hilos en Java Natalia Partera Jaime Alumna colaboradora de la asignatura Índice 1. Hilos y Concurrencia 2 2. Implementar
Más detallesPrimitivas de Sincronización
Primitivas de Sincronización JUAN CARLOS CONDE RAMÍREZ DISTRIBUTED COMPUTING Introducción Todas las soluciones previas al problema de mutex fueron un desperdicio de algún modo: Si un proceso es incapaz
Más detallesThreads LSUB. 30 de marzo de 2016 GSYC
Threads LSUB GSYC 30 de marzo de 2016 (cc) 2015 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Más detallesMultienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto
Java y multiprogramación sobre red Sistemas Distribuidos ITInformática (UVA) César Llamas Bello 2003 Índice Multienhebrado en Java Un toque de sincronización Transporte en Java Ejemplo conjunto 26/02/2003
Más detalles2. 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 detallesUNIDAD III.- Programación Concurrente
UNIDAD III.- Programación Concurrente Sincronización Todo thread tiene una prioridad. Un thread hereda su prioridad, cuyo valor está entre 1 y 10 La prioridad puede modificarse con los métodos: setpriority()
Más detallesProgramació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 detallesTema 12: Programación multihilo
Tema 12: Programación multihilo Antonio J. Sierra Índice 1. Modelo de hilo en Java. 2. El hilo principal. 3. Creación de un hilo. 4. Creación de múltiples hilos. Prioridades. 5. Comunicación entre hilos.
Más detallesJava Threads. Sistemas Distribuidos Rodrigo Santamaría
Java Threads Sistemas Distribuidos Rodrigo Santamaría Java Threads Hilos Sincronización Ejercicios FAQ 2 3 Hilos Un hilo (Thread) es un proceso en ejecución dentro de un programa java main Thread t t.start()
Más detallesSincronización por Colas en en Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2013 Facultad de Ingeniería Universidad de Buenos Aires Sincronización por Colas en en Java Interface Collection Una interface
Más detallesProcesamiento paralelo con hilos de Java
Procesamiento paralelo con hilos de Java Tabla de contenidos 1. Soporte para hilos en Java... 1 2. Creación y control de un hilo... 2 2.1. Métodos de creación de un hilo... 2 2.2. Control de hilos mediante
Más detallesThreads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.
Threads o Hilos Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta
Más detallesEjecució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 detallesHilos. Í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 detallesPROGRAMACIÓ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 detallesConcurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
Más detallesPrueba objetiva 2 - Clave a
Apellidos: Nombre: Matrícula: Normas Prueba objetiva 2 - Clave a Concurrencia 2010-2011 - Primer semestre Lenguajes, Sistemas Informáticos e Ingeniería de Software Este es un cuestionario que consta de
Más detallesELO330: Programación de Sistemas: Certamen Final 8/11/2006 Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje.
Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje. 1.- Para el programa listado al final, qué valor se obtiene por pantalla cuando es ejecutado, en los siguientes
Más detallesPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE Ejemplos III: Sopa de Letras 1 Objetivo Mostrar las diferentes estrategias que puede seguir un gestor que tiene que ejecutar una tarea compleja que puede ser paralelizada en diferentes
Más detallesConcurrencia 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 detallesArquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
Más detallesTema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13
Tema III. Multihilo Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.Tipos de Concurrencia 3.Hilos en Java 4.Implementación de un SNB i. Sin Hilos ii. Con Hilos iii.con Pool
Más detallesProgramación concurrente y semáforos en Java
Programación concurrente y semáforos en Java En Java es posible ejecutar tareas en paralelo, utilizando hebras de control (hilos, threads). Este modo de programación permite tener un espacio de memoria,
Más detallesUNIVERSIDAD 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 detallesGuillermo Román Díez
Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia
Más detallesPráctica #5: Uso de control de flujo, Excepciones y Lectura Estándar
Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Introducción El alumno creará cuatro programas en java que manejen control de flujo mediante las sentencias de bucle while y do/while,
Más detallesProgramació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 detallesColas. 5.1 Implementación
Capítulo 5 Colas Las colas al igual que las pilas son un tipo especial de listas en las cuales los elementos se insertan por un lado y se eliminan por el otro. Es decir se sacan en el mismo orden en que
Más detallesObjetivos. El alumno empleará el concepto de excepción en la programación orientada a objetos para el manejo de errores de ejecución.
Universidad Nacional Autónoma de México Facultad de Ingeniería PRACTICA 10 PROGRAMACIÓN ORIENTADA A OBJETOS (MANEJO DE EXCEPCIONES) Objetivos El alumno empleará el concepto de excepción en la programación
Más detallesRevisión del Concepto de Hilo (Thread) API Java parathreads: Marco General. Clase Thread: API Básica. TEMA 3: Creación y Control De Threads en Java
TEMA : 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 BIBLIOGRAFÍA RECOMENDADA:
Más detallesINGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2)
INGENIERÍA F. I. M. DE PROTOCOLOS DE COMUNICACIONES - IMPLEMENTACIÓN DE PROTOCOLOS F. I. M. L.S.I.I.S L.S.I.I.S INGENIERÍA DE PROTOCOLOS DE COMUNICACIONES (MÓDULO 2) http://www.personal.fi.upm.es/~lmengual/inicio_ip.html
Más detallesIntroducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Más detallesNatalia Partera Jaime Alumna colaboradora de la asignatura
Programación Concurrente y de Tiempo Real Guión de prácticas 6: Programación en Java de algoritmos de control de la Exclusión Mutua con variables comunes Natalia Partera Jaime Alumna colaboradora de la
Más detallesPROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar
Más detallesAcceso coordinado a recursos compartidos
Programación Concurrente en Linux Acceso coordinado a recursos compartidos Alberto Lafuente, Dep. KAT/ATC de la UPV/EHU, bajo Licencia Creative Commons 1 Contenido 1. Recursos compartidos 2. Mecanismos
Más detallesLaboratorio 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 detallesSistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos
Sistemas operativos: una visión aplicada Capítulo 5 Comunicación y sincronización de procesos Sistema multiprogramado con un una CPU Proceso A Proceso B Proceso C Tiempo Sistemas operativos: una visión
Más detallesProgramació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 detallesPROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:
Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica
Más detallesProgramació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 detallesUnidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo
Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Hilo (theread) llamado también proceso ligero o subproceso, es la unidad de ejecución de un proceso y esta asociado con una secuencia
Más detallesProgramación concurrente Hebras
20151021 dit UPM Programación concurrente Hebras Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons Reconocimiento-NoComercial-Compar9rIgual
Más detallesTECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE
MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE Los modificadores de acceso, como su nombre indica, determinan desde qué clases se puede acceder a un determinado elemento. En Java tenemos 4 tipos:
Más detallesExamen Teórico Convocatoria de Junio de 2012
Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica
Más detallesUniversidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I
Hilos Universidad Autónoma de Baja California Hasta el momento los programas que se han estado manejando en el curso han sido secuenciales. Esto es, inician en un punto y continuan su ejecución de manera
Más detallesEl servicio de echo con sockets
PRÁCTICA 2 El servicio de echo con sockets E l objetivo de esta práctica es crear y ejecutar una aplicación cliente servidor "echo" basada en sockets TCP pero estructurándola según el modelo de objetos
Más detallesSockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.
Sockets La biblioteca estándar de clases de Java nos proporciona todo lo que necesitamos para utilizar sockets en nuestras aplicaciones en el paquete java.net, por lo que tendremos que añadir la siguiente
Más detallesSTRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C)
APRENDERAPROGRAMAR.COM STRINGBUFFER, STRINGBUILDER JAVA. EJEMPLO. DIFERENCIAS ENTRE CLASES. CRITERIOS PARA ELEGIR. MÉTODOS. (CU00914C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado
Más detallesPROGRAMACION CONCURRENTE Y DISTRIBUIDA. IV.1 Executor framework: Threads pool
PROGRAMACION CONCURRENTE Y DISTRIBUIDA IV.1 Executor framework: Threads pool J.M.Drake L.Barros 1 Tareas y Threads Existen dos modelo básicos de programas concurrentes: Un programa resulta de la actividad
Más detallesHebras 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 detallesProgramación Concurrente y Distribuída Estado Compartido, 2010
Programación Concurrente y Distribuída Estado Compartido, 2010 Camilo Rueda 1 1 Universidad Javeriana-Cali 9 de abril de 2010 Concurrencia con estado: introducción problema: modelar con puertos un objeto
Más detallesCódigo Fuente. Creamos en C:\ una carpeta para ubicar el código fuente del servidor. En mi caso, he creado una carpeta denominada rmi4
EL EJEMPLO El proceso servidor provoca un eco de la entrada de teclado enviada por el proceso cliente. Por sencillez, ejecutaremos tanto el servidor como el cliente en la máquina local. El sistema operativo
Más detallesCarlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Más detallesPor ejemplo, el siguiente error conduce inmediatamente a un deadlock:
Monitores Los semáforos, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles a errores. Su utilización exige disciplina.
Más detallesEstructuras de control selectivas
Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos
Más detallesdit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas
Análisis y diseño de software dit UPM Tema 2: Concurrencia /threads (java) José A. Mañas 11.3.2018 referencias The Java tutorials: Concurrency Oracle Java Threads Scott Oaks & Henry Wong O'Reilly Media;
Más detallesUnidad 1: Gestión de Procesos
Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de
Más detallesBenemé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 detallesQué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.
APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje
Más detallesJava 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 detallesPROGRAMACION CONCURRENTE Y DISTRIBUIDA. III.4 Concurrencia con Java: Sincronización explícita
PROGRAMACION CONCURRENTE Y DISTRIBUIDA III.4 Concurrencia con Java: Sincronización explícita J.M. Drake 1 Locks explícitos En Java 5.0, se introdujo un mecanismo de sincronización alternativo al lock intrínseco
Más detallesNormalmente, los programas son ejecutados de forma secuencial. Único flujo de control
Hilos BUAP Introducción Normalmente, los programas son ejecutados de forma secuencial Único flujo de control Un programa con un único flujo de control, ejecuta sólo una tarea (hilo) Dr. Ivan Olmos 2 Introducción
Más detallesBENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN
BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACION CONCURRENTE PARALELA Y PRACTICA 3 (PARTE 1 Y 2) HILOS POSIX NOMBRE:
Más detallesINDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases
INDICE Prologo XIII 1 Recorrido rápido de java 1.1. Para empezar 1 1.2. Variables 2 1.3. Comentarios en el condigo 1.4. Constantes con nombre 5 1.4.1. Caracteres Unicode 6 1.5. Flujo de control 7 1.6.
Más detallesMECANISMOS DE SINCRONIZACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA
MECANISMOS DE SINCRONIZACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA Sincronización El problema de la sincronización de hilos tiene lugar cuando varios hilos intentan acceder al mismo recurso o dato. A la
Más detallesCURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE
CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.
Más detallesMonitores 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 detallesUnidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos
Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende
Más detallesCAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos
CAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos III. PROGRAMACION CON HILOS (THREADS) EN JAVA Java contiene una serie de clases y construcciones específicas para programar de forma
Más detalles06/06/2017. Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa
1 Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de Sentencia Nivel de Unidad Nivel de Programa 2 Hay varios niveles para expresar concurrencia: Nivel de Instrucción Nivel de
Más detallesUnidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Más detallesJava: 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 detallesHOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA
Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá
Más detallesConcurrencia. 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 detallesCURSO 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 detallesProgramación Concurrente con Java
Programación Concurrente con Java Diseño de Sistemas Operativos Facultad de Informática Juan Pavón Mestras Dep. Sistemas Informáticos y Programación Universidad Complutense Madrid Concurrencia En el mundo
Más detallesProgramación Java. Introducción a Archivos de datos de Entrada
Programación Java Introducción a Archivos de datos de Entrada Consideremos el siguiente algoritmo: Algoritmo (no modular) para determinar y mostrar el promedio aritmético (media aritmética) de los elementos
Más detallesPROGRAMACIÓ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