Tema 12: Programación multihilo
|
|
|
- Francisco José Vázquez de la Fuente
- hace 7 años
- Vistas:
Transcripción
1 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. Sincronización. 6. Modelado UML para la programación multihilo. Clases activas. 1
2 Introducción Un programa multihilo contiene dos o más partes que pueden ejecutarse de forma concurrente. Cada parte de ese programa se llama hilo (Thread) y cada hilo establece un camino de ejecución independiente. La concurrencia reúne varios hilos de ejecución. Forma especializada de multitarea (multitasking). basada en procesos basada en hilos Multitarea basada en Procesos Proceso es un programa que se está ejecutando. Multitarea basada en procesos se puede decir que es la característica que le permite a la computadora ejecutar dos o más programas concurrentemente. Un programa es la unidad de código más pequeña que el planificador puede seleccionar. Los procesos son tareas pesadas que necesitan su propio espacio de direccionamiento. La comunicación entre procesos es más cara y limitada. Es costoso el cambio de contexto de un proceso a otro. 2
3 Multitarea basada en hilos El hilo es la unidad de código más pequeña que se puede seleccionar. La multitarea basada en hilos requiere menos sobrecarga que la multitarea basada en procesos. Los hilos son más ligeros, ya que comparten el mismo espacio de direcciones y comparten cooperativamente el mismo proceso pesado. La comunicación entre hilos es ligera y el cambio de contexto de un hilo al siguiente es menos costoso. El modelo de hilo en Java Java utiliza hilos para permitir que el entorno en su globalidad sea asíncrono. 3
4 Estados de los hilos Un hilo puede estar ejecutándose. Puede estar preparado para ejecutarse tan pronto como disponga de tiempo de CPU. Si se está ejecutando puede suspenderse, lo que equivale a detener temporalmente su actividad. El hilo suspendido puede reanudarse permitiendo que continúe su tarea allí donde la dejó. Un hilo puede estar bloqueado cuando espera un recurso. Un hilo puede detenerse, finalizando su ejecución de manera inmediata. Una vez detenido, un hilo no puede reanudarse. El ciclo de vida de un Thread En ejecución start yield Nuevo Hilo Ejecución Suspendido Detenido El método run termina 4
5 Prioridades de los hilos El intérprete de Java utiliza prioridades para determinar cómo debe tratar cada hilo con respecto a los demás. La prioridad de un hilo es un valor entero que asigna un orden de ejecución cuando los hilos estén preparados para ejecutarse o ejecutándose La prioridad de un hilo se utiliza para decidir cuándo se pasa a ejecutar otro hilo. Esto es lo que se conoce como cambio de contexto. Reglas para el cambio de contexto Un hilo puede ceder voluntariamente el control. Esto se hace por abandono explícito, al quedarse dormido o al bloquearse en espera de una E/S pendiente. En este caso, se examinan todos los hilos restantes y se selecciona para su asignación a la CPU aquél que, estando listo para su ejecución, tenga la prioridad más alta. Un hilo puede ser desalojado por otro con prioridad más alta. En este caso, un hilo de baja prioridad que no libera la CPU es desalojado por otro de mayor prioridad con independencia de lo que estuviese haciendo en ese instante. 5
6 Sincronización (I) Los hilos permiten y potencian el comportamiento asíncrono de los programas, forma de forzar el sincronismo donde sea necesario Haciendo que coincidan en el tiempo dos o más hilos de ejecución Java implementa una versión de modelo clásico de sincronización entre procesos, llamado monitor. El monitor es un mecanismo de control que fue definido en primer lugar por C.A.R. Hoare y que puede entenderse como una pequeña caja en la que sólo cabe un hilo. Una vez que un hilo entra en el monitor, los demás deben esperar a que éste salga. Los monitores se utilizan para proteger un bien compartido y evitar que sea manipulado por más de un hilo simultáneamente. Sincronización (II) Cada objeto tiene su propio monitor implícito en el que entra automáticamente cuando se llama a uno de los métodos sincronizados del objeto. Una vez que un hilo está dentro de un método sincronizado, ningún otro hilo puede llamar a otro método sincronizado del mismo objeto. 6
7 El hilo principal class HiloActual { public static void main (String args[]) { Thread t = Thread.currentThread(); System.out.println("Hilo actual: " +t); //cambia el nombre del hilo t.setname("mi hilo"); System.out.println("después del cambio de nombre: " +t); try { for (int n = 5; n>0 ; n--) { System.out.println(n); Thread.sleep(1000); catch (InterruptedException e){ System.out.println("Interrupcion del hilo principal"); Hilo actual: Thread[main,5,main] después del cambio de nombre: Thread[Mi hilo,5,main] Creación de un hilo Dos opciones: Implementando la interfaz Runnable. Extendiendo la clase Thread. La clase Thread define varios métodos que pueden sobrescribir las clases derivadas. El único que tiene que ser sobrescrito es run(). Este método es exactamente el mismo que es necesario para implementar la interfaz Runnable. Implementar la interfaz permite utilizar herencia de cualquier otra clase diferente. 7
8 Implementando la interfaz Runnable Si un objeto implementa la interfaz Runnable se puede usar para crear un hilo. El comienzo del hilo (con start()) provoca que el método run() del hilo se pueda invocar de forma separada. Thread(Runnable objetohilo, String nombrehilo) synchronized void start() public abstract void run() Ejemplo con Runnable (I) //Crea un segundo hilo. class NuevoHilo implements Runnable { Thread t; NuevoHilo() { //Crea un nuevo hilo t = new Thread(this,"Hilo hijo"); System.out.println("Hilo hijo: "+t); t.start(); //comienza el hilo //Este es el punto de entrada del segundo hilo public void run() { try { for (int i = 5; i > 0; i--){ System.out.println("Hilo hijo: " +i); Thread.sleep(500); catch(interruptedexception e) { System.out.println("Interrupcion de hilo hijo"); System.out.println("Sale del hilo hijo"); 8
9 Ejemplo con Runnable (II) class Hilos0 { public static void main(string args[]){ new NuevoHilo(); //crea un nuevo hilo try{ for (int i = 5; i>0 ; i--){ System.out.println("Hilo Principal: " +i); Thread.sleep(1000); catch(interruptedexception e) { System.out.println("Interrupcion del hilo principal"); System.out.println("Sale del hilo principal."); Extendiendo la clase Thread Crea una nueva clase que herede de la clase Thread y después crear una instancia de esa clase. Esta nueva clase debe sobreescribir el método run(), que es el punto de entrada del nuevo hilo. También debe llamar al método start() para que comience la ejecución del nuevo hilo. 9
10 Ejemplo con Thread (I) //Crea un hilo extendiendo la clase Thread. class NuevoHilo extends Thread { NuevoHilo() { //Crea un nuevo hilo super("hilo demo"); System.out.println("Hilo hijo: "+this); start(); //comienza el hilo //Este es el punto de entrada del segundo hilo public void run() { try { for (int i = 5; i > 0; i--){ System.out.println("Hilo hijo: " +i); Thread.sleep(500); catch(interruptedexception e) { System.out.println("Interrupcion de hilo hijo"); System.out.println("Sale del hilo hijo"); Ejemplo con Thread (II) class Hilos1 { public static void main(string args[]){ new NuevoHilo();//crea un nuevo hilo try{ for (int i = 5; i>0 ; i--){ System.out.println("Hilo Principal: " +i); Thread.sleep(1000); catch(interruptedexception e) { System.out.println("Interrupcion del hilo principal"); System.out.println("Sale del hilo principal."); 10
11 Creación de múltiples hilos Hasta ahora sólo se han utilizado dos hilos: el hilo principal y un hilo hijo. Se pueden generar tantos hilos como necesiten. Ejemplo, creación de varios hilos (I) //Creación de múltiples hilos class NuevoHilo implements Runnable { String nombre; Thread t; NuevoHilo(String NombreHilo) { //Crea un nuevo hilo nombre = NombreHilo; t = new Thread(this, nombre); System.out.println("Nuevo Hilo: " + t); t.start(); //comienza el hilo //Este es el punto de entrada del hilo public void run() { try { for (int i = 5; i > 0; i--){ System.out.println(nombre + ": " +i); Thread.sleep(1000); catch(interruptedexception e) { System.out.println("Interrupcion del hilo "+ nombre); System.out.println("Sale del hilo " + nombre); 11
12 Ejemplo creación de varios hilos (II) class Hilos2 { public static void main(string args[]){ new NuevoHilo("Uno"); new NuevoHilo("Dos"); new NuevoHilo("Tres"); try{ Thread.sleep(10000); catch(interruptedexception e) { System.out.println( "Interrupcion del hilo principal"); System.out.println( "Sale del hilo principal."); C:\jdk1.2.2\bin>java Hilos2 Nuevo Hilo: Thread[Uno,5,main] Nuevo Hilo: Thread[Dos,5,main] Nuevo Hilo: Thread[Tres,5,main] Uno: 5 Dos: 5 Tres: 5 Uno: 4 Dos: 4 Tres: 4 Uno: 3 Dos: 3 Tres: 3 Uno: 2 Dos: 2 Tres: 2 Uno: 1 Dos: 1 Tres: 1 Sale del hilo Uno Sale del hilo Dos Sale del hilo Tres Sale del hilo principal. Comunicación entre hilos Una forma de determinar si un hilo ha terminado de ejecutarse es llamando al método de la clase Thread isalive(): final boolean isalive() throws InterruptedException Devuelve true si el hilo al que se hace referencia está todavía ejecutándose. Devuelve false en caso contrario. El método join() se utiliza para esperar la finalización de un hilo. final void join() throws InterruptedException Este método espera hasta que finalice el hilo sobre el que se llama. Su nombre surge de la idea de que el hilo llamante espera hasta que el hilo especificado se reúne con él. Hay otras formas de join() que permiten especificar el tiempo máximo que se quiere esperar la finalización de un hilo. final void join(long millis) throws InterruptedException final void join(long millis, int nanos) throws InterruptedException 12
13 Ejemplo de Comunicación entre hilos (I) //Uso del método join() para esperar la finalización de hilos class NuevoHilo implements Runnable { String nombre; Thread t; NuevoHilo(String NombreHilo) { //Crea un nuevo hilo nombre = NombreHilo; t = new Thread(this, nombre); System.out.println("Nuevo Hilo: " + t); t.start(); //comienza el hilo //Este es el punto de entrada del hilo public void run() { try { for (int i = 5; i > 0; i--){ System.out.println(nombre + ": " +i); Thread.sleep(1000); catch(interruptedexception e) { System.out.println("Interrupcion del hilo "+ nombre); System.out.println("Sale del hilo " + nombre); Ejemplo de Comunicación entre hilos (II) class Hilos3{ public static void main(string args[]){ NuevoHilo ob1 = new NuevoHilo("Uno"); NuevoHilo ob2 = new NuevoHilo("Dos"); NuevoHilo ob3 = new NuevoHilo("Tres"); System.out.println("El hilo Uno está vivo: "+ob1.t.isalive()); System.out.println("El hilo Dos está vivo: "+ob2.t.isalive()); System.out.println("El hilo Tres está vivo: "+ob3.t.isalive()); //espera a que terminen los otros hilos try{ System.out.println("Espera finalización de otros hilos "); ob1.t.join(); ob2.t.join(); ob3.t.join(); catch(interruptedexception e) { System.out.println("Interrupcion del hilo principal"); System.out.println("El hilo Uno está vivo: "+ob1.t.isalive()); System.out.println("El hilo Dos está vivo: "+ob2.t.isalive()); System.out.println("El hilo Tres está vivo: "+ob3.t.isalive()); System.out.println("Sale del hilo principal "); La salida de este programa es la siguiente: C:\jdk1.2.2\bin>java Hilos3 Nuevo Hilo: Thread[Uno,5,main] Nuevo Hilo: Thread[Dos,5,main] Nuevo Hilo: Thread[Tres,5,main] El hilo Uno estß vivo: true El hilo Dos estß vivo: true El hilo Tres estß vivo: true Espera finalizaci_n de otros hilos Uno: 4 Dos: 4 Tres: 4 Uno: 3 Dos: 3 Tres: 3 Uno: 2 Dos: 2 Tres: 2 Uno: 1 Dos: 1 Tres: 1 Sale del hilo Uno Sale del hilo Dos Sale del hilo Tres El hilo Uno estß vivo: false El hilo Dos estß vivo: false El hilo Tres estß vivo: false Sale del hilo principal 13
14 Suspensión y Reanudación de un hilo Son dos métodos marcados como Deprecated : final void resume() final void suspend() La clase Object proporciona los siguientes métodos: void wait() void wait(long timeout) void wait(long timeout, int nanos) Provoca que el hilo actual espere hasta que otro hilo invoque a notify() o notifyall(). void notify () Despierta un solo hilo que estaba esparando en este monitor del objeto. void notifyall () Despierta todos los hilos que estaban esperando en este monitor del objeto. Prioridad El planificador de hilos utiliza las prioridades de los hilos para determinar cuándo debe permitir que se ejecute cada hilo. Si dos hilos están preparados para ejecutarse se ejecutará el de mayor prioridad. Prioridad es un valor entero (5 por defecto) comprendido entre Thread.MIN_PRIORITY y Thread.MAX_PRIORITY. Se puede gestionar mediante los métodos: final void setpriority(int nivel) final int getpriority () 14
15 Sincronización Cuando dos o más hilos necesitan acceder de manera simultánea a un recurso compartido, necesitan asegurarse de que sólo uno de ellos accede al mismo en un instante dado. El proceso mediante el cual se consigue esto se llama sincronización. Java proporciona un soporte único, a nivel de lenguaje, para la sincronización. Un monitor es un objeto que se utiliza como cerrojo exclusivo, o mutex (mutually exclusive, mutuamente exclusivo). Sólo uno de los hilos puede ser el propietario del monitor en un instante dado. Cuando un hilo adquiere un cerrojo, se dice que ha entrado en el monitor. Los restantes hilos que estuviesen intentando acceder al monitor bloqueado quedan en suspensión hasta que el primer hilo salga del monitor. Se dice que estos hilos están esperando al monitor. Un hilo que posea un monitor puede volver a acceder al mismo si así lo desea. La sincronización del código se puede realizar mediante la palabra clave synchronized (sincronizado). Ejemplo sin sincronización //Este programa no está sincronizado. class Llamada { void llama(string msg){ System.out.print("["+msg); try { Thread.sleep(1000); catch(interruptedexception e){ System.out.println("Interrumpido"); System.out.print("]"); class ElQueLlama implements Runnable { String msg; Llamada objetivo; Thread t; public ElQueLlama(Llamada objet, String s) { objetivo = objet; msg = s; t = new Thread(this); t.start(); public void run() { objetivo.llama(msg); class Sincro0{ public static void main(string[] args){ Llamada objetivo = new Llamada(); ElQueLlama ob1 = new ElQueLlama(objetivo, "Hola"); ElQueLlama ob2 = new ElQueLlama(objetivo, "Mundo"); ElQueLlama ob3 = new ElQueLlama(objetivo, "Sincronizado"); //Espera a que los hilos terminen try { ob1.t.join(); ob2.t.join(); ob3.t.join(); catch(interruptedexception e){ System.out.println("Interrumpido"); La salida producida por este programa. [Hola[Mundo[Sincronizado]]] 15
16 Con Sincronización class Llamada { synchronized void llama(string msg){ // Esto evitará que otros métodos puedan acceder a llama() mienta otro lo está utilizando. La salida [Hola] [Mundo] [Sincronizado] Otra forma es sincronizar un objeto en un conjunto de sentencias. synchronized (objeto){ //Sentencias que deben ir sincronizadas Modelado UML para la programación multihilo. Clases activas. Las clases activas son elementos estructurales de los bloques del construcción del modelo conceptual de UML. Una clase activa es una clase cuyos objetos tienen uno o más procesos o hilos que constituyen flujos de control independientes pero concurrentes con otros flujos de control (con los que muy probablemente se deberán sincronizar). Una clase activa es igual que una clase, excepto en que sus objetos representan elementos cuyo comportamiento es concurrente con otros elementos. 16
17 Modelado UML para la programación multihilo. Clases activas. GestorEventos supender() 17
1. 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
Tema 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
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
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
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
Arquitecturas 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?
Threads 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
Guillermo Román Díez
Concurrencia Creación de Procesos en Java Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia
Unidad 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
Java 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
Programació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) [email protected] Programación concurrente
UNIDAD 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()
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
Java 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()
Programació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
Guí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
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
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
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
Procesamiento 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
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
Apuntes de Java. Tema 10: Threads. Uploaded by Ingteleco
Apuntes de Java Tema 10: Threads Uploaded by Ingteleco http://ingteleco.webcindario.com [email protected] La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta por email
EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado
TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos
CAPÍ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
CAPÍ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í
Primitivas 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
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
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
CAPÍTULO 2. PROCESOS VS. HILOS
CAPÍTULO 2. PROCESOS VS. HILOS El objetivo de este capítulo es el de discutir con un poco más de profundidad todo lo relacionado con el concepto de proceso que sea relevante para el estudio de la programación
BENEMERITA 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
Programació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,
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
Examen 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
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
Cena 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
Concurrencia. Programación Concurrente. Espera ocupada. Primitivas IPC con bloqueo
Concurrencia Programación Concurrente Espera ocupada. Primitivas IPC con bloqueo Programación concurrente Los lenguajes concurrentes tienen elementos para: Crear procesos Sincronizar procesos Comunicar
Concurrencia en Java
Concurrencia en Java Concurrencia en Java Con un único procesador, solamente puede ejecutarse una instrucción en un instante de tiempo. La frase anterior parece una perogrullada, pero no lo es. Posiblemente
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
Fundamentos 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
Tema 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
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
Programación orientada a objetos III
Ingeniería en Desarrollo de software Semestre 05 Asignatura: Programación orientada a objetos III Clave: 16142524 Universidad Abierta y a Distancia de México 1 Índice PRESENTACIÓN DE LA UNIDAD... 3 PROPÓSITOS
Revisió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:
Natalia 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
Programació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
Programación Concurrente en Java
Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006 Threads Extendiendo la clase java.lang.thread. public class PrThread extends
Conceptos Básicos de Concurrencia en Java
Conceptos Básicos de Concurrencia en Java Ingeniería del Software II Curso 2010/2011 Sergio Ilarri Artigas [email protected] Parte del material está extraído de JavaSun y Java Tutorial: Copyright 1994-2007
Concurrencia Monitores. Guillermo Román Díez
Concurrencia Monitores Guillermo Román Díez [email protected] Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de
Programació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
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
Multienhebrado 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
Tema 2: Aplicaciones Multihilo, Cliente Servidor
Servidores Multiproceso PID=1 atiende A Tema 2: Aplicaciones Multihilo, Cliente Servidor 1 t=1. A puja t=1. B puja Multiples Clientes Concurrente Web Main () for (;;) Web new_connection = accept (i, NULL,
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
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
Tema 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.:
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:
Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)
Procesos y Threads Procesos y Threads Procesos Procesos Threads Threads Concurrencia Concurrencia Ventajas Ventajas Modelos Modelos Información Información adicional () adicional () Preparado Preparado
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
MECANISMOS 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
dit 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;
Introducción a los Threads Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2014 Facultad de Ingeniería Universidad de Buenos Aires Introducción a los Threads Java Para crear un nuevo Thread Se extiende la clase
Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005
24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos
HOJA 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á
Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN
EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio
PROGRAMACIÓ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
PROGRAMACIÓ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
Colas. 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
! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes
Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar
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
TECNICAS 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:
Concurso: 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
Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.
SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:
Guía práctica de estudio 07: Herencia
Guía práctica de estudio 07: Herencia 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 07: Herencia Objetivo:
PROGRAMACION 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
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()
PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA
PROGRAMACIÓN ORIENTADA A OBJETOS CON JAVA Angel García Beltrán y José María Arranz Santamaría Sección de Publicaciones Escuela Técnica Superior de Ingenieros Industriales Universidad Politécnica de Madrid
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
Unidad 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
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
Servlet 3.0 (II) Servlets Asincronos
En el articulo anterior hemos usado las anotaciones de Servlets 3.0 para dar de alta un servlet sin tener la necesidad de hacer uso del web.xml.en este articulo introduciremos el concepto de servlet asincrono.
Introducción a Java. Introducción a Java. Programación I
Introducción a Java Introducción a Java Programación I Como Funciona Tipos de Datos TIPO TAMAÑO RANGO byte 8 bits Valores numéricos de 128 a 127 short 16 bits Valores numéricos de 32.768 a 32.767 int 32
Java Threads. Sistemas Distribuidos Rodrigo Santamaría
+ Java Threads Sistemas Distribuidos Rodrigo Santamaría + Java Threads Hios Sincronización Ejercicios FAQ 2 + Hios 3 Un hio (Thread) es un proceso en ejecución dentro de un programa main java Thread t
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
Tareas 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
Diseño de tipos Igualdad, representación, código, copia y relación de orden
Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones
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
