Lenguaje Java. Sesión 5: Hilos. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles
|
|
- Lorena Roldán Fernández
- hace 5 años
- Vistas:
Transcripción
1 Lenguaje Java Sesión 5: Hilos
2 Í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
3 Hilos Cada hilo es un flujo de ejecución independiente Tiene su propio contador de programa Todos acceden al mismo espacio de memoria Necesidad de sincronizar cuando se accede concurrentemente a los recursos Existen estructuras de datos sincronizadas (ej, Vector) y sin sincronizar (ej, ArrayList)
4 Creación de Hilos Se pueden crear de dos formas: Heredando de Thread Problema: No hay herencia múltiple en Java Implementando Runnable Debemos crear sólo los hilos necesarios Dar respuesta a más de un evento simultáneamente Permitir que la aplicación responda mientras está ocupada Aprovechar máquinas con varios procesadores
5 Heredar de Thread Heredar de Thread y sobrecargar run( ) public class MiHilo extends Thread { public void run() { // Codigo de la tarea a ejecutar en el hilo Instanciar el hilo Thread t = new Thread(new MiHilo()); t.start();
6 Implementar Runnable Implementar Runnable public class MiHilo implements Runnable { public void run() { // Codigo de la tarea a ejecutar en el hilo Instanciar el hilo Thread t = new Thread(new MiHilo()); t.start();
7 Ciclo de vida de los hilos El hilo será no ejecutable cuando: Se encuentre durmiendo (llamando a sleep) Se encuentre bloqueado (con wait) Se encuentre bloqueado en una petición de E/S
8 Scheduler El scheduler decide qué hilo ejecutable ocupa el procesador en cada instante Se sacará un hilo del procesador cuando: Se fuerce la salida (llamando a yield) Un hilo de mayor prioridad se haga ejecutable Se agote el quantum del hilo Establecemos la prioridad con t.setpriority(prioridad); La prioridad es un valor entero entre Thread.MIN_PRIORITY y Thread.MAX_PRIORITY
9 Concurrencia y sección crítica Cuando varios hilos acceden a un mismo recurso pueden producirse problemas de concurrencia Sección crítica: Trozo del código que puede producir problemas de concurrencia Debemos sincronizar el acceso a estos recursos Este código no debe ser ejecutado por más de un hilo simultáneamente Todo objeto Java (Object) tiene una variable cerrojo que se utiliza para indicar si ya hay un hilo en la sección crítica Los bloques de código synchronized utilizarán este cerrojo para evitar que los ejecute más de un hilo
10 Bloques sincronizados Para sincronizar un bloque de código podemos indicarle el objeto cuyo cerrojo utilizaremos. El cerrojo (lock) se adquiere al inicio de la sección crítica y se libera al final de ésta Otro hilo no podrá adquirir ese mismo cerrojo al mismo tiempo synchronized(algun_objeto) { // Código sección crítica
11 Métodos sincronizados Sincronzar un método o una sección de código public synchronized void seccion_critica() { // Codigo Se utiliza el cerrojo del objeto en el que se definen (cerrojo implícito) Se podrán ejecutar por un sólo hilo en un instante dado.
12 Uso de la sincronización Deberemos utilizar la sincronización sólo cuando sea necesario, ya que reduce la eficiencia No sincronizar métodos que contienen un gran número de operaciones que no necesitan sincronización Reorganizar en varios métodos No sincronizar clases que proporcionen datos fundamentales Dejar que el usuario decida cuando sincronizarlas en sus propias clases
13 Sincronización reentrante La sincronización en Java es reentrante porque un lock puede ser adquirido varias veces por un mismo hilo. Es decir, en el mismo hilo, una sección sincronizada puede contener a otra y esto no produce un bloqueo a pesar de que las dos adquieren el lock del objeto this: class Reentrant { public synchronized void a() { b(); System.out.println(" estoy en a() "); public synchronized void b() { System.out.println(" estoy en b() ");
14 Dependencia de hilos Podemos esperar a que un hilo haya acabado de ejecutarse para poder continuar otro hilo Para ello bloquearemos el hilo actual que debe esperar a otro hilo t con: t.join();
15 Bloqueo de hilos Si el hilo va a esperar a que suceda un evento (por ejemplo, terminar una E/S), hay que bloquearlo para que no ocupe el procesador: wait(); Cuando suceda el evento debemos desbloquearlo desde otro hilo con: notify(); Ambos métodos deben ser invocados desde métodos sincronizados
16 Bloques vigilados En lugar de esperar iterativamente (que ocupa la CPU): public void bloquevigilado() { // No hacerlo así! while(!condicion) { // Se detiene aquí, //comprobando iterativamente la condición System.out.println("La condición se ha cumplido"); Bloquear el hilo y esperar una notificación por parte de otro. public synchronized bloquevigilado() { while(!condicion) { try { wait(); // desocupa la CPU catch (InterruptedException e) { System.out.println("La condición se ha cumplido");
17 Ejemplo: productor/consumidor El productor produce si el buffer no está lleno, y si no debe esperar El consumidor consume si el buffer no está vacío, y si no debe esperar
18 Productor import java.util.random; public class Producer implements Runnable { private Drop drop; public Producer(Drop drop) { this.drop = drop; public void run() { String importantinfo[] = { "Mares eat oats", "Does eat oats", "Little lambs eat ivy", "A kid will eat ivy too" ; Random random = new Random(); for (int i = 0; i < importantinfo.length; i++) { drop.put(importantinfo[i]); try { Thread.sleep(random.nextInt(5000)); catch (InterruptedException e) { drop.put("done");
19 Consumidor import java.util.random; public class Producer implements Runnable { private Drop drop; public Producer(Drop drop) { this.drop = drop; public void run() { String importantinfo[] = { "Mares eat oats", "Does eat oats", "Little lambs eat ivy", "A kid will eat ivy too" ; Random random = new Random(); for (int i = 0; i < importantinfo.length; i++) { drop.put(importantinfo[i]); try { Thread.sleep(random.nextInt(5000)); catch (InterruptedException e) { drop.put("done");
20 Recurso public class Drop { // Message sent from producer // to consumer. private String message; // True if consumer should wait // for producer to send message, // false if producer should wait for // consumer to retrieve message. private boolean empty = true; public synchronized String take() { // Wait until message is // available. while (empty) { try { wait(); catch (InterruptedException e) { // Toggle status. empty = true; // Notify producer that // status has changed. notifyall(); return message; //... //... public synchronized void put(string message) { // Wait until message has // been retrieved. while (!empty) { try { wait(); catch (InterruptedException e) { // Toggle status. empty = false; // Store message. this.message = message; // Notify consumer that status // has changed. notifyall(); //Main class: public class ProducerConsumerExample { public static void main(string[] args) { Drop drop = new Drop(); (new Thread(new Producer(drop))).start(); (new Thread(new Consumer(drop))).start();
21 Interbloqueos Deadlock: hilo A queda a la espera de que B lo desbloquee, a la vez que B queda a la espera de que A lo desbloquee: se interbloquean sin usar CPU Livelock: hilo A realiza acción que causa que B realice otra acción que a su vez vuelve a causar la acción de A: se interbloquean ocupando la CPU Stravation (inanición): otros hilos hambrientos ocupan el recurso (o CPU) que nuestro hilo necesita para seguir funcionando
22 Mecanismos de alto nivel Implementaciones que proporciona Java para facilitar la programación con concurrencia Interfaz Lock Colecciones concurrentes Variables atómicas Ejecutores y pools Otros muchos en el paquete java.util.concurrent
23 La interfaz Lock En lugar de synchronized: synchronized(this){ // acceder al recurso Adquirir un objeto Lock y después liberarlo Lock l =...; l.lock(); try { // acceder al recurso protegido por l finally { l.unlock();
24 La interfaz Lock Añade algunos métodos más versátiles trylock( ) : rechaza darnos el lock si éste no está disponible en el instante o bien tras un tiempo de espera especificado. Permite evitar deadlocks. lockinterruptibly( ) : rechaza darnos el lock si otro hilo envía una interrupción antes de que el lock haya sido adquirido Da soporte a un mecanismo de wait/notify a través de objetos Condition que dejarían el hilo a la espera de que se cumpla la condición
25 Lock y Condition class BufferLimitado { final Lock lock = new ReentrantLock(); //Dos condiciones para notificar sólo a los hilos //que deban hacer put o take, respectivamente final Condition notfull = lock.newcondition(); final Condition notempty = lock.newcondition(); final Object[] items = new Object[100]; int putptr, takeptr, count; public void put(object x) throws InterruptedException { lock.lock(); try { while (count == items.length) notfull.await(); items[putptr] = x; if (++putptr == items.length) putptr = 0; ++count; notempty.signal(); finally { lock.unlock(); public Object take() throws InterruptedException { lock.lock(); try { while (count == 0) notempty.await(); Object x = items[takeptr]; if (++takeptr == items.length) takeptr = 0; --count; notfull.signal(); return x; finally { lock.unlock();
26 Colecciones concurrentes La colección Vector garantiza el acceso sincronizado El paquete java.util.concurrent contiene colecciones con un soporte más avanzado para concurrencia BlockingQueue: FIFO con tiempo de espera máximo cuando añadimos y no cabe, o quitamos y no hay. ConcurrentMap: subinterfaz de Map que define operaciones atómicas útiles (quitar una clave valor sólo si la clave está presente, etc). ConcurrentNavigableMap para coincidencias aproximadas
27 Variables atómicas Para no tener que sincronizar el acceso a variables, contamos con versiones atómicas de éstas: AtomicBoolean AtomicInteger AtomicIntegerArray AtomicIntegerFieldUpdater<T> AtomicLong AtomicLongArray AtomicLongFieldUpdater<T> AtomicMarkableReference<V> AtomicReference<V> AtomicReferenceArray<E> AtomicReferenceFieldUpdater<T,V> AtomicStampedReference<V>
28 Variables atómicas Ejemplo: synchronized / variable atómica class ContadorSincronizado { private int c = 0; public synchronized void increment() { c++; public synchronized void decrement() { c--; public synchronized int value() { return c; import java.util.concurrent.atomic.atomicinteger; class ContadorAtomic { private AtomicInteger c = new AtomicInteger(0); public void increment() { c.incrementandget(); public void decrement() { c.decrementandget(); public int value() { return c.get();
29 Ejecutores Se separa la gestión de la ejecución de los hilos en clases especializadas Interfaz Executor: obliga a implementar el método execute(runnable r) En lugar de iniciar el hilo con (new Thread(r)).start( ); lo iniciaremos con e.execute(r); teniendo: Runnable r; Executor e;
30 ExecutorService Subinterfaz de Executor Añade el método Future submit( objeto ) que acepta objetos Runnable y Callable, que permiten devolver un valor al finalizar la tarea. submit( ) devuelve objetos Future que permiten obtener el estado de la tarea a ejecutar y devuelven un resultado en el caso de Callable.
31 ScheduledExecutorService Subinterfaz de ExecutorService Añade el método schedule( ) que ejecuta un Runnable o Callable después de un tiempo especificado También añade scheduleatfixedrate( ) y schedulewithfixeddelay( ) para tareas periódicas
32 Pools de hilos Uno o varios worker thread ejecutan los métodos run( ) de distintos Runnable / Callable, pero en el mismo hilo. Se ahorra la sobrecarga de creación y destrucción de hilos en la que interviene reserva y liberación de memoria Creación del pool distintas maneras: Método estático newfixedthreadpool(n) Instancia de ThreadPoolExecutor o de ScheduledThreadPoolExecutor.
33 Instancia de ThreadPoolExecutor //Al principio del fichero: //import java.util.concurrent.*; //import java.util.*; int poolsize = 2; int maxpoolsize = 2; long keepalivetime = 10; final ArrayBlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(5); ThreadPoolExecutor threadpool = new ThreadPoolExecutor(poolSize, maxpoolsize, keepalivetime, TimeUnit.SECONDS, queue); Runnable mytasks[3] =...; // y le asignamos tareas //Poner a ejecutar dos tareas y una que quedará en cola: for(int i=0; i<3; i++){ threadpool.execute(task); System.out.println("Tareas:" + queue.size()); //Encolar otra tarea más que declaramos aquí mismo: threadpool.execute( new Runnable() { public void run() { for (int i = 0; i < 10; i++) { try { System.out.println("i = " + i); Thread.sleep(1000); catch (InterruptedException ie){ ); //Ejecuta las tareas que queden pero ya no acepta nuevas: threadpool.shutdown();
34 Sobrecarga de ThreadPoolExecutor class PausableThreadPoolExecutor extends ThreadPoolExecutor { private boolean ispaused; private ReentrantLock pauselock = new ReentrantLock(); private Condition unpaused = pauselock.newcondition(); //Sobrecargamos el método: protected void beforeexecute(thread t, Runnable r) { super.beforeexecute(t, r); pauselock.lock(); //Sección sincronizada try { while (ispaused) unpaused.await(); //Bloquearlo catch (InterruptedException ie) { t.interrupt(); finally { pauselock.unlock(); //Nota: para pausar cada hilo el programador debe //implementar la lógica necesaria //Método nuevo: public void pause() { pauselock.lock(); //Sección sincronizada try { ispaused = true; finally { pauselock.unlock(); //Método nuevo: public void resume() { pauselock.lock(); //Sección sincronizada try { ispaused = false; unpaused.signalall(); //Desbloquea hilos bloqueados finally { pauselock.unlock();
35 Preguntas...?
Hilos. Índice. Copyright 2012-13 Dept. Ciencia de la Computación e IA All rights reserved.
Índice 1 Creación de hilos... 2 2 Ciclo de vida y prioridades...3 2.1 Prioridades de los hilos... 4 2.2 Interrupción de un hilo...4 3 Sincronización de hilos... 5 3.1 Sincronización reentrante...6 4 Bloques
Más 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 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 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 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 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 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 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 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 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 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 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 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 detallesConceptos Básicos de Concurrencia en Java
Conceptos Básicos de Concurrencia en Java Ingeniería del Software II Curso 2010/2011 Sergio Ilarri Artigas silarri@unizar.es Parte del material está extraído de JavaSun y Java Tutorial: Copyright 1994-2007
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 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 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 detalles} Antonio Tomeu API Java para Concurrencia 5 Antonio Tomeu API Java para Concurrencia 6 de Alto Nivel
TEMA 6: API Java para Concurrencia de Alto Nivel CONTENIDO API Java 5 de Control de la Concurrencia Clases para Gestión de Variables Atómicas Clase java.concurrent.util.concurrent.semaphore Clase java.concurrent.util.concurrent.cyclicbarrier
Más 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 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 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 detallesLenguaje Java Avanzado
Lenguaje Java Avanzado Sesión 1: Introducción al Lenguaje Java 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción a Java Conceptos de POO Elementos de un programa Java Herencia, interfaces,
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 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 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 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 detallesTEMA 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 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 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 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 detallesIntroducción a Java con JavaME
Introducción a Java con JavaME Sesión 3: Excepciones, hilos, acceso a la red Introducción a Java con JavaME 2011-2012 Depto. Ciencia de la Computación e IA Excepciones, hilos red-1 Puntos a tratar Excepciones
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 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 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 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 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 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 detalles1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS
Hilos 1. Fundamentos. Los procesadores y los Sistemas Operativos modernos permiten la multitarea, es decir, la realización simultánea de dos o más actividades. En la realidad, un ordenador con una sola
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 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 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 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 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 detallesProgramación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente, a
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 detallesGuía práctica de estudio 12: Hilos
: Elaborado por: M.C. M. Angélica Nakayama C. Ing. Jorge A. Solano Gálvez Autorizado por: M.C. Alejandro Velázquez Mena Guía práctica de estudio 12: Objetivo: Implementar el concepto de multitarea utilizando
Más detallesThreads. 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 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 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 3 Sistemas con memoria común
Unidad 3 Sistemas con memoria común Definiciones Por concurrencia se entiende la existencia de varias actividades simultáneas o paralelas. La concurrencia de procesos puede verse como la ejecución simultánea
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 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 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 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 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 detallesHilos - Ejercicios. Índice
Índice 1 Hilos parables y pausables... 2 2 (*) Grupos de hilos y prioridades... 3 3 Productor-consumidor... 4 4 (*) Descarga de imágenes con hilos y Looper... 4 5 Descarga de imágenes con Pool de hilos...5
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 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 detallesFederico 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 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 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 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 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 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 detallesEjercicio 1 (proyecto prlistas, paquete listas)
PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.
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 Practica de Laboratorio No. 2 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detallesJava Vademécum /concurrencia
Dept. de Ingeniería de Sistemas Telemáticos E.T.S.I. de Telecomunicación Universidad Politécnica Madrid Java Vademécum /concurrencia José A. Mañas 23 de abril de 2017 vademécum /concurrencia página 1 Índice
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 detalles1 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 detalles75-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 detallesPROGRAMACION CONCURRENTE Y DISTRIBUIDA. IV.3 Monitorización de excepciones en Threads
PROGRAMACION CONCURRENTE Y DISTRIBUIDA IV.3 Monitorización de excepciones en Threads J.M. Drake 1 Gestión excepciones en thread Java Las excepciones se pueden lanzar en cualquier punto de un programa Java.
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 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 detallesFundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana
Fundamentos de los Sistemas Operativos Tema 2. Procesos 1998-2015 José Miguel Santos Alexis Quesada Francisco Santana Contenidos del Tema 2 Qué es un proceso Estructuras de datos para gestionar procesos
Más detallesUNIDAD 3 MEMORIA COMÚN. El problema de exclusión mutua
UNIDAD 3 MEMORIA COMÚN El problema de exclusión mutua Exclusión mutua Exclusión mutua significa asegurar que un recurso compartido (variable, estructura de datos, etc.) sea accedida por un solo hilo a
Más detallesTema 4: Control del flujo de ejecución: Excepciones y Threads. Programación Orientada a Objetos. Marcos López Sanz
Tema 4: Control del flujo de ejecución: Excepciones y Threads Programación Orientada a Objetos Marcos López Sanz Máster en Informática Gráfica, Juegos y Realidad Virtual MARCOS LOPEZ SANZ Excepciones Def.:
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 detallesPROGRAMACIÓN CONCURRENTE
PROGRAMACIÓN CONCURRENTE Lenguajes de Programación - Progr. Concurrente 1 Introducción El concepto fundamental de la programación concurrente es la noción de Proceso. Proceso: Cálculo secuencial con su
Más detallesJava 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 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 detallesISO Tema 8,
ISO Tema 8, 2017-2018 Pablo González Nalda Depto. de Lenguajes y Sistemas Informáticos 13 de abril de 2018 Modificado el 27 de abril de 2018 de la presentación 1 2 3 4 5 6 7 2 / 32 1 2 3 4 5 6 7 3 / 32
Más detallesConcurrencia, exclusión mutua y sincronización. Capítulo 5 HungriaBerbesi
Concurrencia, exclusión mutua y sincronización Capítulo 5 HungriaBerbesi 1 Concurrencia Múltiples aplicaciones Aplicaciones estructuradas Estructura del sistema operativo 2 Concurrencia 3 Sección Crítica:
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 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 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 detallesColas Implementación con gestión estática de memoria
Colas Implementación con gestión estática de memoria Esquema general 0 1 2 3 n - 1... _primero = 0 _ultimo = 0 Esquema general * Añadir un elemento a la cola. 0 1 2 3 n - 1 'a'... 1) _vector[_ultimo] =
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 detallesTareas en segundo plano AsyncTask Thread
Tareas en segundo plano AsyncTask Thread Programació De Dispositius Mòbils PRDM Cristobal Raya Giner 2015 Hilos de ejecución En una aplicación Android, todas las actividades, los servicios y los broadcast
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 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 detallesApuntes de Java. Tema 10: Threads. Uploaded by Ingteleco
Apuntes de Java Tema 10: Threads Uploaded by Ingteleco http://ingteleco.webcindario.com ingtelecoweb@hotmail.com La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta por email
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 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 detallesConcurrencia 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 detallesLección 7: Sincronización de procesos mediante monitores
Lección 7: Sincronización de procesos mediante monitores Introducción Qué es un monitor? Características y funcionamiento de un monitor Implementación de un monitor en C++ y Java Algunos ejemplos de aplicación:
Más detallesCena de filosofos y sincronizacion java
Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Objetivos Presentaros la aplicación
Más detallesConcurso: Cuánto sabes de JAVA?
Concurso: Cuánto sabes de JAVA? Motivación: o Para cambiar el ritmo de las jornadas y que no todas las actividades sean charlas o Recordar conocimientos y aprender algo nuevo. o Las preguntas pueden ayudarnos
Más detallesLenguajes de Programación Curso Práctica Hilos Extendiendo Thread Implementando Runnable... 1
Objetivos Hilos y sincronización Índice 1. Hilos 1 1.1. Extendiendo Thread. 1 1.2. Implementando Runnable. 1 2. Sincronización y monitores 3 3. Tareas 3 3.1. Clases proporcionadas 5 3.2. Clases a realizar
Más detallesExamen concurrencia Nov 2011
Programación concurrente y Distribuída Curso 2011-12 Miguel Telleria, Laura Barros, J.M. Drake telleriam AT unican.es Computadores y Tiempo Real http://www.ctr.unican.es Contenido Código base Examen del
Más detalles