75-62 Técnicas de Programación Concurrente II 2004 java Threads
|
|
- María Ángeles Álvarez Coronel
- hace 8 años
- Vistas:
Transcripción
1 75-62 Técnicas de Programación Concurrente II 2004 java Threads FIUBA Ing. Osvaldo Clúa Bibliografía: tutorial de Java en Un buen libro (algo teórico) es Garg: Concurrent and Distributed Computing in Java Puede haber material que ayude en las páginas de sus clases en http: Se presupone un conocimiento general de Java. En Internet hay bastantes cursos para poder seguir. En la página Web de la materia se dejó una colección de guías de estudio que se usó en años anteriores. Threads Para crear un thread en Java existen dos opciones: Extender la clase Thread. Implementar la interface Runnable. La elección de alguna de estas opciones depende del diseño general. Al no admitir Java herencia múltiple, la implementación de interfaces sirve para denotar propiedades secundarias al eje de herencia. El siguiente es un ejemplo de estas dos formas de hacerlo: 1. /** 2. * Primero.java 3. * 4. * El HolaMundo de las threads 5. */ class T1 extends Thread 8. { 9. public void run() { 10. System.out.println 11. ("Hola, soy tu primer Thread, extendi la clase Thread "+ 12. Thread.currentThread()); 13. } 14. } 15. class T2 implements Runnable 16. { 17. public void run() { 18. System.out.println 19. ("Hola, soy tu primer Thread, implemente Runnable " Thread.currentThread());
2 21. } 22. } public class Primero 25. { 26. public static void main(string args[]) { 27. T1 t1 = new T1(); 28. T2 ru = new T2(); 29. t1.start(); 30. Thread t2 = new Thread (ru); 31. t2.start(); 32. System.out.println("Hola, soy el Thread principal"+ 33. Thread.currentThread()); 34. try{ 35. t1.join(); 36. t2.join(); 37. } 38. catch(interruptedexception e){ 39. e.printstacktrace(); 40. System.exit(0); 41. } 42. System.out.println("Chau, solo queda el Thread principal"+ 43. Thread.currentThread()); 44. } 45. } En el código anterior se ven las dos formas de crear un thread. Al llamar al método start() de Thread se crea efectivamente el Thread y se le da control al método run() que es el que hay que programar. En el caso de implementar runnable se debe crear el thread para que haya acceso a este método. En la clase Thread están definios los métodos start() y join() con el significado habitual. La salida de este programa se ve así: 1.Hola, soy tu primer Thread, extendi la clase Thread Thread[Thread-0,5,main] 2.Hola, soy el Thread principalthread[main,5,main] 3.Hola, soy tu primer Thread, implemente Runnable Thread[Thread-1,5,main] 4.Chau, solo queda el Thread principalthread [main,5,main] -2-
3 Donde: Thread-0, Thread-1 y principalthread son los nombres de los threads. 5 es la prioridad y main es el grupo al que pertenecen. Estados de un thread: Un thread Java puede estar en uno de cuatro estados posibles: New. Cuando el objeto se crea (usando la isntrucción new()). Runnable. Una vez llamado el método start(). Blocked. Cuando se está a la espera de una operación de I/O o se llamó a los métodos sleep(), suspend() (este último está desaprobado y se quitará de alguna versión posterior de Java) Dead.. Cuando se terminó el run(...) o se llamó a stop() (también desaprobado). Como ejemplo mas completo se propone un conjunto de dos contadores sobre un mismo canvas: 1. /* El contador */ 2. import java.awt.*; public class Cont implements Runnable 5. { 6. long cont=0;int adormir; 7. Color color; Cont(int tiempo, Color c){ 10. color=c; adormir=tiempo; 11. } 12.public void run() { 13. while (true){ 14. try {Thread.sleep(aDormir);} 15. catch (InterruptedException e) {} 16. cont++; 17. } -3-
4 18. } 19.public void paint(graphics g) { 20. g.setcolor(color); 21. g.setfont(new Font (null,font.plain,24)); 22. g.drawstring( String.valueOf(cont), 10, 30); 23. } 24.} Este contador duerme según un parámetro de construcción (tiempo) y se incrementa en uno. Además tiene la responsabilidad de dibujarse en paint. Una aplicación usa de este contador, creando uno distinto en un canvas que divide en dos graphics: 1. /* La aplicacion del contador */ 2. import java.awt.*; 3. import java.awt.event.*; class ContAp extends Frame implements Runnable{ 6. Thread tic,tac,anima; 7. Cont c1,c2; 8. Canvas c; 9. int ancho=200,alto=300; 10.ContAp(String s){ 11. super(s); 12. c1=new Cont(500,Color.black); 13. c2=new Cont(1000,Color.blue); 14. tic=new Thread(c1);tac=new Thread(c2); 15. c=new Canvas (); 16. c.setsize(ancho,alto); 17. add(c); pack(); setvisible(true); 18. tic.start();tac.start(); 19. addwindowlistener(new WindowAdapter() 20. {public void windowclosing(windowevent e) {System.exit(0);}}); 21. anima=new Thread(this);anima.start(); 22. repaint(); 23. } 24.public void paint (Graphics g){ 25. Graphics cg=c.getgraphics(); 26. cg.setcolor(color.light_gray); 27. cg.fillrect(0,0,ancho,alto); 28. Graphics g1=cg.create(0,0,ancho,alto/2);c1.paint (g1); -4-
5 29. Graphics g2=cg.create(0,alto/2,ancho,alto/2); c2.paint(g2); 30. } 31.public void run() { 32. while (true) { 33. try {Thread.sleep(250);} 34. catch (InterruptedException e) {} 35. repaint(); 36. } 37. } } En el método paint se ve como divide el graphic en dos y le pide a cada contador que lo dibuje. Falta una clase principal que tenga el método public static void main(string s[]) para completar el ejemplo. Se usaron 3 threads: tick, tack y anima. Las dos primeras son de cada contador en tanto que la última es el thread necesario para la animación. Pruebe sin ella a ver que pasa. En el caso anterior cada elemento tiene su contexto gráfico propio. El ejemplo de los puntos adjunto a esta práctica muestra una variación compartiendo un único canvas. Como último ejemplo simple, se analizará la aplicación de puntos que rebotan en un canvas. Acá los puntos son una clase cuya responsabilidad es dibujarse, mantener su posición y velocidad. La clase PunCan contiene al canvas, la inicialización y el método paint() para dibujarse. En este caso se usó una técnica de animación conocida como Double Buffer. en la clase PunCan se hizo override de update: public void update(graphics g){paint(g);} Evitando que se borre la ventana con cada llamado. Se definió: Graphics migr; Image miim; -5-
6 Para tener donde trabajar offscreen. La image se crea del mismo tamaño que el canvas: miim=createimage((new Double(ca.getBounds().getWidth ())).intvalue(),(new Double(ca.getBounds().getHeight ())).intvalue()); migr=miim.getgraphics(); Y de esta imagen se crea un nuevo contexto gráfico. Se dibuja sobre este contexto gráfico y se envía toda la imagen al canvas de la pantalla en un solo paso: for(int i=0;i<cant;i++) {p[i].paint(migr);} Graphics g1=ca.getgraphics(); g1.drawimage(miim,0,0,this); } Esto anula el flicker. Es importante que entienda como cambiar la velocidad de animación. Sincronización El siguiente es el código de un productor consumidor "automático" para su uso desde la consola de texto: 1. /** 2. * Buffer.java Con primitivas de sincronizacion 3. */ public class Buffer 6. { 7. private static final int BUFFER_SIZE = 5; 8. private int cant; // items en el buffer 9. private int in; // Proximo libre 10. private int out; // Proximo lleno 11. private Object[] buffer; 13. public Buffer() 14. { 15. cant = 0; // Comienza Vacio 16. in = 0; 17. out = 0; 18. buffer = new Object[BUFFER_SIZE]; 19. } 21. public synchronized void poner(object item) { 22. while (cant == BUFFER_SIZE) { 23. try {wait();} -6-
7 24. catch (InterruptedException e) { } 25. } cant; //Agrega al buffer 27. buffer[in] = item; 28. in = (in + 1) % BUFFER_SIZE; 29. if (cant == BUFFER_SIZE) 30. System.out.println("Entro " + item " Buffer LLENO"); 32. else 33. System.out.println("Entro " + item " Buffer Size = " + cant); 35. notify(); // despierta algun consumidor 36. } 37. public synchronized Object sacar() { 38. Object item; 39. while (cant == 0) { 40. try {wait(); } 41. catch (InterruptedException e) { } 42. } cant; 44. item = buffer[out]; 45. out = (out + 1) % BUFFER_SIZE; 46. if (cant == 0) 47. System.out.println("Salio " + item + " Buffer VACIO"); 48. else 49. System.out.println("Salio " + item " Buffer Size = " + cant); 51. notify(); 52. return item; 53. } 54. } Este buffer es el objeto encargado de hacer la sincronización entre el productor y el consumidor. No es un objeto activo (No tiene threads). En Java cada objeto tiene un lock (monitor es el meta-lenguaje de Java). Al ejecutar un método synchronized se toma este monitor y se lo libera al terminar la ejecución del método. Solo un thread puede tener el monitor de un objeto. El lazo de sincronización está en el uso de: wait() que libera el monitor del objeto y suspende al thread que lo llama hasta que ocurra una interrupción. notify() que provoca una interrupción a algún thread que espera por el monitor del objeto. notifyall() que provoca una interrupción en todos los threads que esperan por el monitor del objeto. Como pueden interrumpirse (y salir del wait( )) por otras causas, se hace el while -7-
8 por la condición de las líneas 23 y 40. El productor es: 1. /** 2. * Productor.java 3. */ 5. import java.util.*; 7. public class Productor extends Thread 8. { 9. private Buffer buffer; 10. final static int NAP_TIME=5; 11. public Productor(Buffer b) {buffer = b;} 12. public void run() 13. { 14. Date mens; 15. while (true){ 16. dormir();mens = new Date(); 17. System.out.println("Producido " + mens); 18. buffer.poner(mens); 19. } 20. } 21. public static void dormir() { // para suspenderse 22. int sleeptime = (int) (NAP_TIME * Math.random () ); 23. try { Thread.sleep(sleepTime*1000); } 24. catch(interruptedexception e) { } 25. } 26. } y el consumidor 1. /** 2. * Consumidor.java 3. */ 5. import java.util.*; 7. public class Consumidor extends Thread 8. { 9. private Buffer buffer; 10. final static int NAP_TIME=5; 11. public Consumidor(Buffer b) 12. {buffer = b;}
9 14. public void run() 15. {Date mens; 16. while (true){ 17. dormir(); 18. System.out.println("Consumidor quiere consumir."); 19. mens = (Date)buffer.sacar(); 20. } 21. } 22. public static void dormir() { // para suspenderse 23. int sleeptime = (int) (NAP_TIME * Math.random() ); 24. try { Thread.sleep(sleepTime*1000); } 25. catch(interruptedexception e) { } 26. } 27. } Para su ejecución hace falta una clase como la que sigue: 1. /** * Prubuf.java */ 4. public class Prubuf 5. { 6. public static void main(string args[]) { 7. Buffer sr = new Buffer(); 8. Productor pt = new Productor(sr); 9. Consumidor ct = new Consumidor(sr); 10. pt.start(); ct.start(); 11. } 12. } En el archivo zip correspondiente a esta guía encontrará un productor-consumidor con interface gráfica como la que sigue. El código sin embargo no hace uso de un thread continuo como el primer código. Ejercicios: 1. Resolver el Productor Consumidor con un thread para cada uno mas los threads necesarios para la interface gráfica. 2. Generalizarlo para "n" productores y "k" consumidores (a ingresar desde la interface). 3. Resolver con una interface gráfica parecida el problema de los Fumadores. 4. Haga un programa que permita hacer Drag & Drop de una forma simple a través de un canvas. Use las clases asociadas a Java2D para determinar los límites y dibujar las formas (no hay threads). 5. Programe un juego simple con una víbora que se mueve en la pantalla. Ud dispone de una palmeta (rectángulo) para aplastarle la cabeza. Si no lo logra, una marca de la palmeta queda en la pantalla y la víbora debe esquivarla. -9-
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:
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 detallesMultitarea 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
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 detallesPROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan
Más detallesProgramación Java Curso 2006-1 C Draw
Programación Java Curso 2006-1 C Draw FIUBA Introducción: Prof.. María Feldgen Ing. Osvaldo Clúa En Java, para dibujar se usa el contexto gráfico de un componente. Según las plataformas, este contexto
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 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 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 detallesI. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro
I. Introducción a la programación orientada a objetos y al lenguaje JAVA Colegio Reuven Feuerstein Javier Navarro Utilizando Clases Definidas en Java La manera de utilizar una clase previamente definida
Más detallesJava 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
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 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 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 Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto
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 detallesObject 1. Threads en Java
Object 1 Threads en Java Introducción En este artículo voy a explicar cómo se usan los threads en Java (también traducidos como "hilos de ejecución"). La intención no es solamente explicar cuáles son las
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 detallesIntroducción al lenguaje Java
Tipo de entrega: Fecha límite: Lugar: Introducción al lenguaje Java por grupos de prácticas sesión de laboratorio Atenea Objetivos de la práctica: Escribir aplicaciones simples en Java Utilizar el entorno
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 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 Práctica de Laboratorio No. 4 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detallesHebras 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
Más detallesHilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php
Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php Hilos en Java A veces necesitamos que nuestro programa Java realice varias cosas simultáneamente. Otras veces tiene que realizar una tarea muy
Más detallesIdentificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java
Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente
Más detallesConcurrencia 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
Más detallesIntroducción a la Programación Orientada a Objetos
Introducción a la Programación Orientada a Objetos El paradigma imperativo. En un programa se tienen una serie de variables con las cuales operamos y modificamos mediante sentencias y funciones para producir
Más detallesclass Nombre_Clase extends Nombre_SuperClase { cuerpo de la clase extendida }
REUTILIZACIÓN DE CLASES:MODELO DE HERENCIA EN JAVA Java soporta herencia simple pero no múltiple. Lo hace mediante el mecanismo de extensión de clase. A partir de él, una subclase se extiende (hereda)
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 detallesPráctica 4: Java Remote Method Invocation (RMI)
Práctica 4: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción Hasta el momento hemos visto aplicaciones remotas donde un cliente utiliza un objeto remoto que ha sido publicado
Más detallesMonitores Ing. Iván Medrano Valencia
Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática Programación Concurrente y Distribuida Práctica 5 1. OBJETIVO. Ing. Iván Medrano Valencia En esta práctica, comprobaremos
Más detallesProgramación Concurrente en Java
Programación Concurrente en Java Curso 2006-2007 9/2/2007 Prog. Distribuida Bajo Internet Qué es la Programación Concurrente? Diseño basado en varias actividades independientes Conceptualmente se ejecutan
Más detallesCDI Exclusión mutua a nivel alto. conceptos
conceptos El concepto de usar estructuras de datos a nivel alto libera al programador de los detalles de su implementación. El programador puede asumir que las operaciones están implementadas correctamente
Más detallesModelo de Objetos Distribuidos
Remote Method Invocation Modelo de Objetos Distribuidos Un objeto remoto es un objeto cuyos métodos pueden ser invocados desde otra máquina virtual de java, potencialmente en un host diferente. Modelo
Más detallesFacultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación
Facultad de Ingeniería Escuela de Ingeniería de Sistemas y Computación Algoritmia y Programación NORMAS PARA LA ENTREGA DE LOS LABORATORIOS Coloque el nombre de los integrantes del grupo, nombre del profesor,
Más detallesApplets y Aplicaciones
Applets y Aplicaciones En JAVA es posible crear dos tipos de programas: Applets Son pequeños programas que requieren de un browser W 3 JAVA-compatibe para ejecutarse (actualmente, Netscape, Microsoft Explorer,
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
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 detallesJava: Clases Abstractas e Interfaces
Clases abstractas e interfaces Java: Clases Abstractas e Interfaces Franco Guidi Polanco Escuela de Ingeniería Industrial Pontificia Universidad Católica de Valparaíso, Chile fguidi@ucv.cl A nivel conceptual,
Más detallesGESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)
APRENDERAPROGRAMAR.COM GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C) Sección: Cursos Categoría: Lenguaje de programación Java nivel avanzado I
Más detallesPráctica 1. Monitores en Java.
Práctica 1 - Programación Concurrente 3º I.S. Pág: 1/15 Práctica 1. Monitores en Java. Programación Concurrente. 3º I.S. Dpto. Lenguajes y Sistemas Informáticos Escuela Técnica Superior de Ingeniería Informática
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 detallesvoid main(void) { string lname; list <string> lnamelist; cout << "Please enter your list of last names finishing with `.`"<<endl;
Segundo Certamen 1.- Haga uso de la información adjunta y desarrolle un programa en C++ que lea apellidos de teclado y los almacene en una lista. Luego se pide listar los apellidos en orden alfabético
Más detallesConcurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia
Concurrencia: deberes Concurrencia: Exclusión Mutua y Sincronización Capítulo 5 Comunicación entre procesos Compartir recursos Sincronización de múltiples procesos Asignación del tiempo de procesador Concurrencia
Más detallesPartes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.
Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;
Más detallesArquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos
Invocación de Métodos Remotos RMI: Remote Method Invocation Prof Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos
Más detallesCurso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Más detallesProgramación Orientada a Objetos con Java
Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer jorgeeie@uabc.mx Sobrecarga de métodos Java permite la definición de dos o más métodos que tengan el mismo nombre, dentro de la
Más detallesPara leer la entrada de consola, lo primero que se hace es construir un Scanner que este asociado al flujo de entrada estándar System.
CICLO: 01/2010 Universidad Don Bosco Materia: Lenguaje de Programación III Contenido: 1-Lectura de Datos de entrada. 2-Introduccion a JOPTIONPANE. 3-Estructuras de Control. ->LECTURA DE DATOS DE ENTRADA
Más detallesPrimer Parcial Septiembre 5 de 2009
Primer Parcial Septiembre 5 de 2009 Algoritmos y Lenguajes II Reglas del juego Tal como se le dijo antes, durante este examen usted no puede pedir ABSOLUTAMENTE nada prestado a sus compañeros, ni hablar
Más detallesdit UPM Tema 3: Concurrencia /ejercicios Análisis y diseño de software José A. Mañas 3.4.2014 http://jungla.dit.upm.es/~pepe/doc/adsw/index.
Análisis y diseño de software dit UPM Tema 3: Concurrencia /ejercicios José A. Mañas http://jungla.dit.upm.es/~pepe/doc/adsw/index.html 3.4.2014 ejercicio 1.1 programar una cuenta bancaria compartida 1.
Más detallesEl lenguaje de programación Java
Departament d Arquitectura de Computadors El lenguaje de programación Java Java (I) Orientado a objetos Ejecutado por una maquina virtual Independiente de la plataforma Multithreaded Orientado a la red
Más detallesProgramación Concurrente y Paralela. P(S) ; sección crítica P(S);
2.5.2 Monitores Los semáforos, a pesar de su sencillez de uso, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles
Más detallesProgramación Concurrente. Curso Java 2012, 2013 Juan Manuel Fernández Peña
Programación Concurrente Curso Java 2012, 2013 Juan Manuel Fernández Peña Programación secuencial Hasta ahora se ha trabajado con programas secuenciales Se ejecuta paso a paso Son deterministas: si se
Más detallesProgramación Orientada a Objetos en Java
Programación Orientada a Objetos en Java Curso 2006-2007 Tema 4 Herencia y Polimorfismo Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Herencia
Más detalles3.9 Patrón Distributed callback
3.9 Patrón Distributed callback Motivación (1) Queremos que la aplicación de administración de los termostatos Monitorize la temperatura de algunos termostatos, avisándonos si ésta baja o sube por encima
Más detallesManejo de eventos AWT
Manejo de eventos AWT En las aplicaciones en modo consola, nuestro método main determina el orden en el que se ejecutan las operaciones de nuestro programa. En las aplicaciones con interfaces gráficas
Más detallesRepaso de las características más importantes de la programación Java y su adaptación a Android
Repaso de las características más importantes de la programación Java y su adaptación a Android 1. Entorno de programación en java 2. Variables y tipos de datos 3. Operaciones y operadores 4. Clases y
Más detalles2. Estructura de un programa en Java
24 A. García-Beltrán y J.M. Arranz 2. Estructura de un programa en Java Objetivos: a) Describir la estructura del código fuente de una aplicación Java b) Presentar los conceptos de comentario y de identificador
Más detallesSistemas Operativos Práctica 4
Sistemas Operativos Práctica 4 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Más detallesIntroducción a Java LSUB. 15 de enero de 2015 GSYC
Introducción a LSUB GSYC 15 de enero de 2015 (cc) 2014 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial - SinObraDerivada
Más detallesLo que necesitaremos para programar en Java, será un editor de texto o IDE y la JDK.
Introducción Java surgió en 1991 dentro de la empresa Sun Microsystems como un lenguaje de programación sencillo y universal destinado a electrodomésticos. La reducida potencia de cálculo y memoria de
Más detalles8. Sentencia return y métodos
92 A. García-Beltrán y J.M. Arranz 8. Sentencia return y métodos Objetivos: a) Describir el funcionamiento de la sentencia return b) Interpretar el resultado de una sentencia return en el código fuente
Más detallesPontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents
Más detallesTema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código
Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación
Más detallesProf. Dr. Paul Bustamante
Carnet Nombre: Examen C++ Grupo A Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante Pág.1 Índice 1. INTRODUCCIÓN... 1 2. EJERCICIO 1: AGENDA TELEFÓNICA (4.0 PTOS.)...1 3. EJERCICIO 2:
Más detallesJava RMI. las RPC de Java. Parte I. Luis Fernando Llana Díaz. Departamento de Sistemas Informáticos y ProgramaciónUniversidad Complutense de Madrid
las RPC de Java. Parte I Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid de marzo de 006 RMI y RPC RPC: Remote Procedure Call. RMI y RPC RPC: Remote Procedure Call.
Más detallesCreación de Applets Simples
Seminario Creación de Applets Simples Junio 2004 Michael González: mgh@unican.es GRUPO DE COMPUTADORES Y TIEMPO REAL Michael González Harbour 1 Creación de Applets Simples 1. Introducción 2. Estructura
Más detalles1. Qué tipos de relación hay entre las siguientes clases?
Ejercicios Tema 8: Herencia 1. Qué tipos de relación hay entre las siguientes clases? Personal de la Universidad PAS Profesor 1 n Estudiante a) herencia y asociación b) herencia y dependencia c) dependencia
Más detallesSecretos de la Programación Concurrente
Secretos de la Programación Concurrente Stuart Perez, Luis Castro Autómatas y Compiladores, Escuela de Ciencias de la Computación e Informática, San Pedro de Montes de Oca, Costa Rica jstuartp@gmail.com
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesSistemas Operativos. Curso 2016 Procesos
Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor
Más detallesAquí se declaran los. Aquí se declaran los métodos de la clase. *Atributos de la clase
Programación Orientada a Objetos Implementación en Java Angela C. Carrillo Ramos Agenda Implementación y uso de clases en Java Ejemplo clase CuentaBancaria 1 Ejemplo Diseño Cuenta Bancaria (1) Diseñar
Más detallesJAVA: Applets. Diseño de aplicaciones web. mperez@fi.upm.es
JAVA: Applets Diseño de aplicaciones web mperez@fi.upm.es Características de Java (I) Simple El programador no tiene que gestionar la memoria! Orientado a Objetos Encapsulación de datos y reutilización.
Más detallesProgramación Java. Práctica 11. Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Alberto Larzabal Jesús Calleja Jon García
Práctica 11 Programación Java San Sebastián, mayo 1999 Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Alberto Larzabal Jesús Calleja Jon García Informática 2: Práctica nº 11 página 1 INDICE
Más detallesProblema B Olonso y los laberintos
Problema B Olonso y los laberintos El siguiente problema es un entretenido juego donde debes ayudar a Olonso a cumplir diferentes misiones. Nuestro personaje estará atrapado en distintos laberintos y tú
Más detallesJava RMI Remote Method Invocation. Invocación Remota de Métodos en Java
Java RMI Remote Method Invocation Invocación Remota de Métodos en Java Contenido Introducción Implementación Diseño de la interfaz remota. Implementación de la interfaz remota. Obtención de las clases
Más detallesIntroducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...
Contenido Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... 5 Introducción Es tiempo de hablar en detalle de lo que significa
Más detallesELO329: Diseño y Programación Orientados a Objetos 20 de Junio de 2005. Certamen Final
Certamen Final 1. Se tiene una aplicación Java que muestra dos botones. Cuando presionamos el botón de la izquierda, incrementa el número mostrado en el botón de la derecha. Cuando presionamos el botón
Más detallesManual del Usuario. Sistema de Help Desk
Manual del Usuario Sistema de Help Desk Objetivo del Manual El siguiente manual tiene como objetivo proveer la información necesaria para la correcta utilización del sistema Help Desk. Describe los procedimientos
Más detallesEstructuras de datos: Proyecto 2
Estructuras de datos: Proyecto 2 28 de mayo de 2013 Instrucciones Enviar las soluciones por email a los ayudantes, con copia a la profesora. Plazo de entrega: 16 de junio (durante todo el día). Se debe
Más detallesMANUAL DE LA APLICACIÓN HELP DESK
CASAMOTOR MANUAL DE LA APLICACIÓN HELP DESK Desarrollado por: NOVIEMBRE, 2012 BOGOTÁ D.C. - COLOMBIA INTRODUCCIÓN Este documento es el manual de la aplicación de Help Desk de Casamotor, producto desarrollado
Más detallesComponentes Swing. Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit)
Componentes Swing Las clases cuyo nombre comienza por J forman parte de Swing. Todas las demás están incluidas en AWT (Abstract Window Toolkit) Component es una clase abstracta que representa a cualquier
Más detallesExamen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1
Examen Septiembre Curso 2001-2002 -- Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Convertidor Dec->Hex y Hex->Dec (5.0 ptos.)... 1 1.1.1 Apartado A (4.0 ptos.)... 1 1.1.2 Apartado B (1.0
Más detallesJava en 2 horas. Rodrigo Santamaría
+ Java en 2 horas Rodrigo Santamaría + Generalidades 2 Desarrollado por Sun en 1995 Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas a bytecode Gestión
Más detallesManual del Protocolo XML-RPC de Mensajería Negocios
Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...
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 detallesExamen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1
Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio
Más detallesLenguajes de Programación Curso 04-05. Práctica 4. Herencia. Utilización de interfaces y clases abstractas. 1. Interfaces 1. 2. Clases abstractas 2
Objetivos Herencia. Utilización de interfaces y clases abstractas. Índice 1. Interfaces 1 2. Clases abstractas 2 3. Collections Framework 3 3.1. Collection........................................... 3
Más detallesPrimera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO. Raúl Gutiérrez Sánchez LAEFF - INTA raul@laeff.inta.
Primera Escuela de la Red Temática SVO. Madrid, 27-28 Noviembre, 2006 JAVA BÁSICO LAEFF - INTA raul@laeff.inta.es Qué es Java? Java es un lenguaje de programación orientado a objetos desarrollado por Sun
Más detallesConcurrencia: Exclusión mutua y Sincronización
Concurrencia: Exclusión mutua y Sincronización Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer Concurrencia Múltiples aplicaciones Aplicaciones estructuradas
Más detalles1. Manejo de memoria estática 2. Manejo de memoria dinámica
1. Manejo de memoria estática 2. Manejo de memoria dinámica *La administración de memoria de una computadora es una tarea fundamental debido a que la cantidad de memoria es limitada. *El sistema operativo
Más detallesManual de Usuario UCMCompra
Manual de Usuario UCMCompra Este manual está orientado a los usuarios iniciales del sistema tales como Secretarias y Jefes de Área y le introducirá en los conceptos básicos del uso de la plataforma UCMCompra,
Más detallesSOLUCION PARCIAL TASK SCHEDULER. Task Scheduler
Task Scheduler Se necesita modelar una aplicación que permita definir tareas y ejecutarlas en forma programada. Las tareas pueden ser: La ejecución de programa cualquiera o comando del sistema operativo,
Más detallesPANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha 2006-08
PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet Revisión 1.1 Fecha 2006-08 Índice 1. Acceder 2. Menú 3. Gestión Básica 3.1 Añadir 3.2 Editar 3.3 Eliminar 3.4 Eliminación de registros
Más detallesMesa de Ayuda Interna
Mesa de Ayuda Interna Documento de Construcción Mesa de Ayuda Interna 1 Tabla de Contenido Proceso De Mesa De Ayuda Interna... 2 Diagrama Del Proceso... 3 Modelo De Datos... 4 Entidades Del Sistema...
Más detallesPráctica 5: Common Object Request Broker Architecture CORBA
Práctica 5: Common Object Request Broker Architecture CORBA Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es entender mejor el funcionamiento de CORBA (Common Object Request Broker
Más detalles1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.)... 1 1.2 Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...
Examen Junio Grupo A Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1. Introducción.... 1 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.)... 1 1.2 Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...
Más detallesTema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle
Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle Contenido Tipos de herencia Herencia y niveles de visibilidad Herencia y creación Redefinición de métodos Conversión
Más detallesConceptos fundamentales de la POO. Fundamentos de la Programación Orientada a Objetos Objetos y Clases
Fundamentos de la Programación Orientada a Objetos Objetos y Clases Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesPráctica 2: Java Remote Method Invocation (RMI)
Práctica 2: Java Remote Method Invocation (RMI) Aplicaciones Telemáticas II Introducción El objetivo de esta práctica es conocer un poco más sobre el paradigma de objetos remotos. La idea principal es
Más detalles