Threads en Java  Threads: programas multitarea  Creación de threads  Ciclo de vida de un thread  Sincronización.

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

CJ02 – Técnicas avanzadas en java 1.4 y 5.0
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Programación Interactiva Hilos
Lenguaje de programación Java
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
REFERENCIA AL OBJETO DE LA CLASE BASE
Polimorfismo Unidad 4.
Inner classes CAPITULO 8.
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
SISTEMAS OPERATIVOS UNIDAD 1..
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (apunts de l’assignatura en format transparència) Multithreading and.
Tema 12: Programación multihilo
 son segmentos de código de un programa que se ejecutan secuencialmente de modo independiente de las otras partes del programa.
10. Hilos Definición y ejecución Thread y Runnable
Java. Threads (Hebras) Los sistemas operativos actuales permiten la multitarea, aunque esta se de tiempo compartido cuando se trabaja con un solo procesador.
Modificadores.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
SCJP Sun Certified Programmer for Java 6
Un hilo es un único flujo de ejecución dentro de un proceso. Un proceso es un programa ejecutándose dentro de su propio espacio de direcciones. Los.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d’Arquitectura de Computadors (Seminaris de CASO) Autors Sincronización de Threads en Java Josep Joan.
Capítulo 9: THREADS Carlos Oñate Bravo. THREADS Start New Threads lRecognize Thread States and Transitions Use Object Locking to Avoid Concurrent Access.
Animación usando Threads (lógica) Tema 10. Threads Definición: Un thread es un flujo secuencial de control dentro de un programa. Definición: Un thread.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Hilos En La Computación. (THREADS).
FACULTAD DE ESTUDIOS SUPERIORES ARAGON
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
Organización de los ficheros  El fichero nombre_clase.h contiene la definición de la clase.  nombre_clase.cpp contiene la definición de las funciones.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
TEMA 2. Programación Concurrente
Administrador de procesos
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
Programación Orientada a Objetos
TEMA 9: DIAGRAMA DE CLASE EN UML
Teoría de Sistemas Operativos Sincronización Procesos
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SEIS DESARROLLO, INNER CLASSES.
Programación orientada a objetos
EQUIPO 4 INTEGRANTES: ALVARADO LUNA AIDA ARACELI MENESES AGUILAR AXEL NESTOR CONTRERAS MONDRAGON ALAN HEMIR SANCHEZ MUÑIZ JOSE FRANCISCO.
La estrategia de prevención del interbloqueo consiste, a grandes rasgos, en diseñar un sistema de manera que esté excluida, a priori, la posibilidad de.
CRUCIGRAMA HORIZONTALES: VERTICALES:
PROGRAMACIÓN ESTRUCTURADA LOS DIAGRAMAS DE ESTADO
THREADS JAVA Ing. Esp. Ricardo Cujar. HILO Un hilo es un proceso que se está ejecutando en un determinado momento en el sistema operativo. Se les define.
FUNDAMENTOS DE PROGRAMACION
Hilos y Multihilos Un thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. A veces se les llama.
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Hilos Java Profesor Elian Rojas Berrocal
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
Clases “ Es una Abstracción de un elemento del mundo real ”
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Prof. Manuel B. Sánchez.  El origen del término polimorfismo es simple: proviene de las palabras griegas poly (muchos) y morphos (forma) multiforme.
Tema 1: Concurrencia con Java
Transcripción de la presentación:

Threads en Java  Threads: programas multitarea  Creación de threads  Ciclo de vida de un thread  Sincronización

THREADS

CREACIÓN DE THREADS  En Java hay dos formas de crear nuevos threads.  crear una nueva clase que herede de la clase java.lang.Thread y sobrecargar el método run() de dicha clase.  El segundo método consiste en declarar una clase que implemente la interface java.lang.Runnable, la cual declarará el método run(); posteriormente se crea un objeto de tipo Thread pasándole como argumento al constructor el objeto creado de la nueva clase (la que implementa la interface Runnable).  tanto la clase Thread como la interface Runnable pertenecen al package java.lang

CREACIÓN DE THREADS DERIVANDO DE LA CLASE THREAD  se crea la clase, que hereda de Thread.  se redefine el método run()  se debe crear un objeto de la clase  llamar al método start()que se encarga de llamar a run().

CREACIÓN DE THREADS IMPLEMENTANDO LA INTERFACE RUNNABLE  se crea la clase, que implementa la interface Runnable.  se define el método run()  crear un objeto de la clase Thread  Al constructor de la clase Thread hay que pasarle una referencia del objeto de la clase que implementa la interface Runnable.  ejecutar el método start() del thread, éste llamará al método run()

CICLO DE VIDA DE UN THREAD  Nuevo (New): El thread ha sido creado pero no inicializado, es decir, no se ha ejecutado todavía el método start().  Ejecutable (Runnable): El thread puede estar ejecutándose, siempre y cuando se le haya asignado un determinado tiempo de CPU.  Bloqueado (Blocked o Not Runnable): El thread podría estar ejecutándose, pero hay alguna actividad interna suya que lo impide  Muerto (Dead): La forma habitual de que un thread muera es finalizando el método run().

 existen varias formas de hacerlo:  Ejecutando el método sleep() de la clase Thread.  Ejecutando el método wait() heredado de la clase Object, a la espera de que suceda algo que es necesario para poder continuar. El thread volverá nuevamente a la situación de runnable mediante los métodos notify() o notifyAll(), que se deberán ejecutar cuando cesa la condición que tiene detenido al thread BLOQUEAR TEMPORALMENTE UN THREAD (PASAR AL ESTADO NOT RUNNABLE)

 Cuando el thread está esperando para realizar operaciones de Entrada/Salida o Input/Output (E/S ó I/O).  Cuando el thread está tratando de llamar a un método synchronized de un objeto, y dicho objeto está bloqueado por otro thread

wait(), notify() y notifyAll()  La forma preferible de detener temporalmente un thread es la utilización conjunta de los métodos wait() y notifyAll().  La principal ventaja del método wait() frente a los métodos anteriormente descritos es que libera el bloqueo del objeto. por lo que el resto de threads que se encuentran esperando para actuar sobre dicho objeto pueden llamar a sus métodos.

 Hay dos formas de llamar a wait():  Indicando el tiempo máximo que debe estar parado (en milisegundos y con la opción de indicar también nanosegundos  Sin argumentos, en cuyo caso el thread permanece parado hasta que sea reinicializado explícitamente mediante los métodos notify() o notifyAll().

 Los métodos wait() y notify() han de estar incluidas en un método synchronized, ya que de otra forma se obtendrá una excepción del tipo IllegalMonitorStateException en tiempo de ejecución.  El uso típico de wait() es el de esperar a que se cumpla alguna determinada condición, ajena al propio thread. Cuando ésta se cumpla, se utilizará el método notifyAll() para avisar a los distintos threads que pueden utilizar el objeto.

SINCRONIZACIÓN  La sincronización nace de la necesidad de evitar que dos o más threads traten de acceder a los mismos recursos al mismo tiempo.  Las secciones de código de un programa que acceden a un mismo recurso (un mismo objeto de una clase, un fichero del disco, etc.) desde dos threads distintos se denominan secciones críticas (critical sections).

 Para sincronizar dos o más threads, hay que utilizar el modificador synchronized en aquellos métodos del objeto- recurso con los que puedan producirse situaciones conflictivas.  Sólo los métodos sincronizados comprueban si un objeto está bloqueado. Por lo tanto, todos los métodos que accedan a un recurso compartido deben ser declarados synchronized.

 Bloquear un recurso u objeto significa que sobre ese objeto no pueden actuar simultáneamente dos métodos sincronizados.  Existen dos niveles de bloqueo de un recurso. El primero es a nivel de objetos, mientras que el segundo es a nivel de clases.