Java y JVM: programación concurrente. Adolfo López Díaz

Documentos relacionados
Java y JVM: programación concurrente

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

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

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

Tema 12: Programación multihilo

Programación concurrente

Tema 6. Threads: programas multitarea

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

UNIDAD III.- Programación Concurrente

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

Programación concurrente en Java

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Laboratorio I Java Threads (Silberschatz Galvin)

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

Benemérita Universidad Autónoma del Estado de Puebla

Benemérita Universidad Autónoma del Estado de Puebla

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

Concurrencia en Java

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

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

Unidad 3 Sistemas con memoria común

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

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

Lenguaje Java. Sesión 5: Hilos. Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles

UPM Concurrencia en Java

Arquitecturas cliente/servidor

dit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas

CAPÍTULO III: Programación Concurrente en JAVA I: Programación con hilos

Programación Orientada a Eventos

Programación concurrente Hebras

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

Procesamiento paralelo con hilos de Java

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

Programación Concurrente en Java

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

Programación Concurrente en Java: Threads

Hebras y Sincronización en Java

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS

MECANISMOS DE SINCRONIZACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA

Monitores Ing. Iván Medrano Valencia

1 HILOS (THREADS) EN JAVA

Conceptos Básicos de Concurrencia en Java

Programación Concurrente con Java

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

dit Programación concurrente Sincronización condicional UPM

Concurrencia Monitores. Guillermo Román Díez

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

UPM Tareas de tiempo real en RT Java

Concurrencia en Android LSUB, GYSC, URJC

Guía práctica de estudio 12: Hilos

Tema 2: Aplicaciones Multihilo, Cliente Servidor

Guillermo Román Díez

Lenguaje Java Avanzado

Natalia Partera Jaime Alumna colaboradora de la asignatura

CAPÍTULO 3. PROCESOS VS. HILOS

TECNICAS DE PROGRAMACION Universidad Católica Los Angeles de Chimbote MODIFICADORES DE ACCESO A LOS MIEMBROS DE UNA CLASE

Federico Peinado

Introducción a los Threads Java

TEMA 6: API Java para Concurrencia de Alto Nivel

(THREADS) Ing. Laura Sandoval Montaño, Ing. Manuel Enrique Castañeda Castañeda PAPIME

Java RMI. Sistemas distribuidos

Sistemas Operativos. Curso Página Web: Asignaturas de programación en el plan de estudios

Práctica #0. Factoriales con Threads en Java. Pepper Pots (A ), Anthony Stark (A ) 18 de enero, 2017.

Threads LSUB. 30 de marzo de 2016 GSYC

Primitivas de Sincronización

Otras formas de Sincronización en Java

PLANTEL 2 CIEN METROS ELISA ACUÑA ROSSETTI ACADEMIA DE TECNOLOGIA DE LA INFORMACION Y DE LA COMUNICACION

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Concurso: Cuánto sabes de JAVA?

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

Apuntes de Java. Tema 10: Threads. Uploaded by Ingteleco

Java en 2 horas. Rodrigo Santamaría

Sistemas Distribuidos. Práctica JavaDSM

CAPÍTULO 2. PROCESOS VS. HILOS

Notas de clase. Threads

Uso de recursos compartidos

Concurrencia en Java

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

Patrones de diseño. Reuso del desarrollo a nivel arquitectural. M. Telleria, L. Barros, J.M. Drake

Programación orientada a objetos III

Sistemas Operativos. Curso 2018 Presentación

2. Tratamiento de objetos con JAVA

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

Programación concurrente y semáforos en Java

Programación Concurrente y de Tiempo Real Guión de prácticas 4: Creación y control de Hilos en Java

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Programación Concurrente Recopilación de teoría referente a la materia

Concurrencia en Android LSUB, GYSC, URJC

UNIVERSIDAD DE GUADALAJARA

Objetos Distribuidos

Práctica 4 Concurrencia en Java

Java en 2 horas. Rodrigo Santamaría

Estructuras de Datos Clase 4 Pilas y colas

Examen Teórico. Convocatoria de Febrero de 2015

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

Procesamiento distribuido en Java

Concurrencia. Primitivas IPC con bloqueo

ELO330: Programación de Sistemas: Certamen Final 8/11/2006 Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje.

Transcripción:

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 Dos unidades básicas de ejecución: Procesos Hilos Modelo principal de ejecución en Java: Hilos

Hilos Definición Sección de código que se ejecuta independientemente. Utilidad Permite aprovechar mejor los recursos en los sistemas multiprocesador.

Creación de hilos en Java Utilizando una clase que extienda de la clase Thread y sobreescribiendo su método run(). Construyendo una clase que implemente la interfaz Runnable y luego creando un objeto de la clase Thread que recibe como parámetro el objeto Runnable.

Creación de hilos en Java public class Prueba implements Runnable { public void run(){ System.out.print("Soy el hilo "+ Thread.currentThread().getName()); public class Main { public static void main(string[] args) throws InterruptedException{ Prueba prueba = new Prueba(); for(int i = 0; i<5; i++){ Thread thread = new Thread(prueba); thread.start();

Creación de hilos en Java Necesidad de sincronización

Join: Ejemplo

Join: Ejemplo El hilo no logra iniciar su ejecución porque el hijo padre (main) termina su ejecución. Usar el método join().

Join

Join

Atributos de los hilos Prioridad Thread.MAX_PRIORITY Thread.MIN_PRIORITY Thread.NORMAL_PRIORITY. Métodos setpriority(int newpriority) y getpriority()

Race condition

Cerrojos Atomicidad en la ejecución de instrucciones Bloques sincronizados métodos bloques de instrucciones

Cerrojos Bloque de instrucciones sincronizado public void addname(string name) { synchronized(this) { lastname = name; namecount++; namelist.add(name); Método sincronizado public synchronized void incrcontador() { contador = contador + 1;

Cerrojos En java cada objeto tiene asociado un cerrojo El bloqueo se adquiere al entrar y se libera al salir Son utilizados por JVM, el programador no tiene acceso

Cerrojos: Ejemplo

Cerrojos: Ejemplo

Cerrojos: Ejemplo

Deadlocks Java no proporciona control sobre situaciones peligrosas de la programación concurrente, por ejemplo en los interbloqueos o deadlocks.

Deadlocks: Ejemplo public class Demo6 implements Runnable { private Object obj1; private Object obj2; public Demo6(Object o1, Object o2) { obj1 = o1; obj2 = o2; public static void main(string[] args) { Object o1 = new Object(); Object o2 = new Object(); new Thread(new Demo6(o1, o2)).start(); new Thread(new Demo6(o2, o1)).start(); public void run() { for (int i = 0; i < 1000; i++) { synchronized (obj1) { synchronized (obj2) System.out.println(i)

Semáforos Clase Semaphore del paquete paquete java.util.concurrent Semáforos contadores Permiten a un recurso ser compartido por varios procesos. Métodos acquire() y release()

Semáforos: Ejemplo

Semáforos: Ejemplo

Referencias Fernández, J. (2012). Java 7 Concurrency Cookbook. Birmingham, Reino Unido: Packt Publishing. Göetz,B., Peierls T., Bloch, J.(2006). Java Concurrency In Practice. EE.UU: Addison-Wesley. Gómez, P. (2000). Concurrencia en Java. Recuperado el 4 de noviembre de 2013, de rt00149b.eresmas.net/otras/concurrenciajava/concurrenciaenjava.pdf. Horvilleur, G. (s.f). Multithreading y Java. Recuperado el 4 de noviembre de 2013, de http://www.comunidadjava.org/files/cuartareunion/javaymultithreading.pdf. Jenkov, J. (s.f.). java.util.concurrent.semaphore. Recuperado el 4 de noviembre de 2013, de http://tutorials.jenkov.com/java-util-concurrent/semaphore.html. Morin, P. (s.f.). The Java Virtual Machine (JVM). Recuperado el 4 de noviembre de 2013, del sitio Web de Carleton University: http://cg.scs.carleton.ca/~morin/teaching/3002/notes/jvm.pdf.

Referencias Oracle. (s.f.).the Java Tutorials: Lesson Concurrency. Recuperado el 4 de noviembre de 2013, de http://docs.oracle.com/javase/tutorial/essential/concurrency/ Silberchatz, A., Baer, P y Gagne, G. (2013). Operating Systems Concepts (9a ed). EE.UU: John Wiley & Sons. UNAM, Posgrado en Ciencia e Ingeniería de la Computación. (s.f). Concurrencia en Java. Recuperado el 4 de noviembre de 2013, del sitio Web de la Universidad Nacional Autónoma de México: http://www.matematicas.unam.mx/jloa/concurrencia.pdf.