Objetos con linea de ejecucion propia

Slides:



Advertisements
Presentaciones similares
UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Advertisements

Métodos y parámetros.
Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Programación Interactiva Hilos
Qué pasa cuando varios clientes tratan de conectarse al mismo teimpo a un servidor Una forma es ir atendiéndolos de a uno en un ciclo: como en el programa.
Tema 12: Programación multihilo
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Método en Java.
Herencia e Interfaces.
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.
Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp.
Archivos y Búsqueda Secuencial
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
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 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
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.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
INFORMATICA III ESCUELA DE INGENIERIA ELECTRONICA DEPARTAMENTO DE SISTEMAS E INFORMATICA.
TEMA 2. Programación Concurrente
Algoritmos y programación 3 - cátedra Fontela Concurrencia.
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
Servidores Concurrentes
Universidad de Chile - Tupper 2007, Santiago - Fono/Fax: (56 2) cec.uchile.cl Módulo ECI - 11: Fundamentos de Redes de Computadores.
CRUCIGRAMA HORIZONTALES: VERTICALES:
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.
Hilos Java Profesor Elian Rojas Berrocal
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Tema 1: Concurrencia con Java
Clase 3: primeros programas (1ª parte) iic1102 – introducción a la programación.
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos.
Clases y Objetos en Java
Proceso: Una instancia de un programa en ejecución
Manejo de Excepciones Agustín J. González ELO329 ELO329.
Introducción a la programación en JAVA
Programación 1 Curso: 5to. I TT
EL MUNDO DE LOS OBJETOS PROGRAMANDO EN JAVA.
ECLIPSE.
Métodos y parámetros.
Fundamentos de la programación orientada a objetos
ELO329: Diseño y Programación Orientados a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Exception Object Throwable Error Exception Runtime Exception.
Clases y Objetos en Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS
Manejo de Excepciones Agustín J. González ELO329.
Agustín J. González ELO-329
Clases y Objetos en Java
Programación Orientada a Objetos I Unidad 4 Relaciones entre clases: herencia.
Herencia en C#.
Manejo de Excepciones Agustín J. González ELO329.
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Manejo de Excepciones Agustín J. González ELO329.
Manejo de Excepciones Agustín J. González ELO329.
Introducción y Threads Programación Concurrente
Clases en Java 1 Métodos de Programación II Profesor: M.C. Alfonso Miguel Uriarte Gálvez.
Manejo de Excepciones Agustín J. González ELO329 ELO329.
String, random y stream en java
Manejo de Excepciones en C++
Programación Orientada a Objetos
Agustín J. González ELO-329
Agustín J. González ELO-329
1. CONEXIÓN DE JAVA CON MYSQL ING. JOSÉ VÉLIZ. PASO NO. 1 Después de creada la base de datos debemos ingresar a la aplicación Java y crear un nuevo proyecto,
SISTEMAS OPERATIVOS JOSE ANGEL MORENO B. Ingeniero de Sistemas TP # Copnia Universidad Incca de Colombia CORPORACI Ó N UNIVERSITARIA REMINGTON.
Clases abstractas e interfaces
Clases y Objetos en Java
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
Transcripción de la presentación:

Objetos con linea de ejecucion propia Hasta ahora hemos visto que los objetos generalmente se activan externamente con una llamada a uno de sus metodos Cuando un metodo de un objeto es llamado, el metodo que lo llamo detiene su ejecucion hasta que el metodo del objeto termina, luego sigue Es posible en java programar metodos para objetos que se ejecuten en paralelo al metodo que lo activo Para eso se requiere de un objeto de la clase Thread

Lineas de ejecucion en paralelo Main Thread1 Thread2 Thread3

Implementacion de Threads La manera mas clara de implementar threads es extendiendo la clase Threas y sobreescribiendo el metodo run() Thread es una clase existente (no hay necesidad de importarla) Tiene un metodo run() (originalmente sin instrucciones) cuyas instrucciones que se ejecutan en paralelo cuando se activa. Para Activar el thread y ejecutar las instrucciones en paralelo de run() hay que llamar al metodo start() de la clase thread La definicion de la clase nueva se veria mas o menos asi public class MyThread extends Thread { And somewhere should appear: public void run() { //instructions to be executed in parallel } Y esto se usa… MyThread mt = new MyThread(); Mt.start() NOTAS

Ejemplo public class SimpleThread extends Thread { String nombre; public SimpleThread(String str) { nombre = str; } public void run() { for (int i = 0; i < 10; i++) { System.out.println(i+" "+nombre); try { this.sleep((int)(Math.random() * 1000)); } catch (InterruptedException e) {} System.out.println("DONE! " + getName()); La instruccion this.sleep(miliseconds) debe aparecer en un bloque try-catch NOTAS

Uso de esta clase public class TwoThreadsTest { public static void main (String[] args) { SimpleThread t1,t2; t1 = SimpleThread("Jamaica"); t2 = SimpleThread("Fiji"); t1.start(); t2.start() } start() gatilla la ejecicion del metodo run. Hay otros metodos que se le pueden aplicar al thread como join(), que suspende la ejecucion del progrsama llamador del thread hasta que el thread termine. suspend(), resume(), stop() estan dados de baja por lo peligroso de su uso Ver ActiveClock y compararlo con ActiveClock2 NOTAS

Threads usando la interfaz Runnable Hay veces en que no se puede o no conviene extender el objeto thread (por ejemplo, si hay que extender un objeto grafico o si estamos en un applet) Para eso se puede implementar la interfaz Runnable. Al implementar la interfaz Runnable, una clase debe programar un metodo llamado run(). Con esto, la clase ademas de ser de la clase que extendio es de la clase Runnable. public class UnRunnable extends UnaClase implements Runnable public void run() { … } Para iniciar la ejecucion paralela de este metodo se debe crear un objeto de la clase Thread y pasarle como parametro al constructor un objeto de la clase Runnable. UnRunnable r = new UnRunnable() ; Thread t = new Thread(r); Al aplicar el metdo start al thread creado de esta manera se ejecutara el run() de el objeto runnable en paralelo t.start() NOTAS

Ejemplos de uso de Runnable El Ejemplo NoSincron muestra el uso de esta tecnica, ademas de problemas de concurrencia que se pueden dar en el uso de Threads Java provee al menos 2 maneras de declarar regiones criticas (regiones donde solo un thread puede ejecutar a la vez Declarar todo el metodo como region critica (ver Sincron1) Usar el semaforo de un objeto (ver Sincron2) NOTAS

Ejemplo de uso de Join El metodo join() aplicado a un objeto de tipo Thread hace que el metodo llamador se detenga hasta que el thread termine Generalmente se usa cuando es necesario esperar que varios threads terminen de procesar para poder sacar algun resultado de eso Ejemplo1: En el caso de TwoThreads, esperar a que terminen ambos threads para anunciar el ganador (ver TwoThreads3.java) Ejemplo2: contar en cuantas lineas de 3 archivos diferentes se encuantra la palabra java. Se pueden echar a correr 3 threds para buscar en cada archivo y luego se espera a que terminen para sumar los resultados (ver BuscaThread.java) NOTAS