Concurrencia en Java
|
|
- Carla Soriano Miranda
- hace 8 años
- Vistas:
Transcripción
1 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() ocasiona la ejecución de su método run() en una hebra independiente. Todas las hebras que se ejecutan en una misma máquina virtual comparten recursos, como por ejemplo la memoria. La implementación de hebras particulares requiere herencia y sobreescritura del método run(). 2 1
2 La clase Thread class MiHebra extends Thread { int cont; MiHebra(int c) { cont = c; } public void run() { while (true) { System.out.println(cont); } } public static void main(string[] args) { new MiHebra(0).start(); new MiHebra(1).start(); } } // class Posible salida El interfaz Runnable Requieren la implementación de un método run(). Se construye una nueva hebra pasando en el constructor un objeto que implemente el interfaz. La llamada al método start() de la hebra ocasiona la ejecución del método run() del objeto pasado en una nueva hebra. No requiere herencia de la clase Thread. Se pueden construir objetos que hereden de otras clases y que pueden, no obstante, ser ejecutados. 4 2
3 El interfaz Runnable class MiHebra implements Runnable { int cont; MiHebra(int c) { cont = c; } public void run() { while (true) { System.out.println(cont); } } public static void main(string[] args) { new Thread(new MiHebra(0)).start(); new Thread(new MiHebra(1)).start(); } } // class 5 Diferencias El uso de la clase Thread requiere utilizar herencia. Debería usarse solo cuando haya que sobreescribir algún otro método. El uso del interfaz Runnable permite que la clase herede de cualquier otra (más versátil). Sin embargo, la ejecución requiere la construcción de un objeto añadido (aquel que implementa el interfaz Runnable) además del objeto de la clase Thread. 6 3
4 Finalización Cuando se termina la ejecución del método run(). Cuando llega al método run() una excepción que no se captura. Cuando se llama al método stop([excepción]) de la hebra (caso particular de la anterior). Cuando se llama al método destroy() de la hebra. No está implementado. 7 Prioridades Cada hebra tiene asociada una prioridad que ayuda a la planificador a decidir qué hebra ejecutar. Existe expropiación entre hebras de igual prioridad No se garantiza que hebras de prioridades menores pasen a ejecutarse si existe alguna hebra de más prioridad que no está bloqueada. 8 4
5 Prioridades La prioridad de una hebra está entre MIN_PRIORITY y MAX_PRIORITY. El valor normal es NORM_PRIORITY, todas definidas como constantes en la clase Thread. La prioridad inicial de una hebra es la misma que la prioridad de la hebra que la crea. Puede modificarse en cualquier momento mediante setpriority(int) y consultarse con getpriority() 9 Control del planificador Además de las prioridades, existen tres métodos estáticos para controlar la planificación: void sleep(long milis): duerme a la hebra al menos <milis> milisegundos. void sleep(long milis, int nanos): duerme a la hebra al menos <milis> milisegundos y <nanos> nanosegundos. void yield(): cede el procesador a otra hebra, pasandose a ejecutar el planificador. Las dos sleep(...) pueden lanzar la excepción InterruptedException. 10 5
6 Clases y excepciones Object Thread Throwable Class... Error Exception... RuntimeException... Excepciones de usuario 11 Cerrojos Todo los objetos (incluidos los arrays) tienen un cerrojo (lock). Solo una hebra puede tener bloqueado el cerrojo de un objeto en un momento dado. Podrá bloquearlo más de una vez antes de liberarlo y solo quedará completamente libre cuando la hebra lo libere tantas veces como lo ha obtenido. Si una hebra intenta obtener un cerrojo ocupado, quedará suspendida hasta que éste se libere y pueda obtenerlo. No se puede acceder directamente a los cerrojos. 12 6
7 Exclusión mútua Es posible garantizar la ejecución en exclusión mútua de un método definiéndolo como synchronized. Los métodos synchronized bloquean el cerrojo del objeto actual, o del objeto Class si el método es estático. Si el cerrojo está ocupado, la hebra se suspende hasta que éste es liberado. No se ejecutarán simultáneamente dos métodos synchronized de un mismo objeto, pero sí uno que lo sea y cualquier número de otros que no. 13 Exclusión mutua Pueden sobreescribirse métodos synchronized para que no lo sean en las clases nuevas. Sin embargo sí lo seguirá siendo el método super.metodo(...). La exclusión mutua es interesante para garantizar la consistencia del estado de los objetos. Se suelen utilizar en los métodos que hacen que el objeto pase por estados transitorios que no son correctos. Si también se hacen synchronized los métodos para consultar el estado, se evita que puedan verse estados inestables del objeto. 14 7
8 Exclusión mutua Puede bloquearse el cerrojo de un objeto dentro de una porción de código mediante synchronized(objeto) { }. Si el cerrojo está bloqueado por una hebra diferente (ya sea porque está ejecutando un método synchronized o porque está dentro de un bloque como el anterior), la hebra actual se suspenderá. Pueden usarse estos bloques para clases sin sincronizar que no podamos modificar. Es inseguro, mejor usar herencia. 15 Señalización Los mecanismos anteriores sirven para evitar la interferencia entre hebras. Es necesario algún método de comunicación entre ellas. Todos los objetos implementan los métodos wait() y notify(). Mediante wait() se suspende la hebra actual hasta que alguna otra llame al método notify() del mismo objeto. Todos los objetos tienen una lista de hebras que están esperando que alguien llame a notify(). 16 8
9 Señalización Estos métodos están pensados para avisar de cambios en el estado del objeto a hebras que están esperando dichos cambios: synchronized void dowhencondition() { while(!condition) wait(); /*... */ } synchronized void changecondition() { /*...*/ notify(); } 17 Señalización Tanto el método wait() como el notify() deben ejecutarse dentro de métodos synchronized. Cuando se llama a wait() se libera el cerrojo del objeto que se tiene bloqueado y se suspende la hebra, de forma atómica. Cuando se llama a notify() se despierta una de las hebras que estaban esperando. Ésta competirá con cualquier otra por volver a obtener el cerrojo del objeto, sin tener ningún tipo de prioridad. De ahí que sea mejor usar while(!condicion) wait(); 18 9
10 Señalización - Métodos wait(long tiempo): espera hasta una notificación, o hasta que pasen <tiempo> milisegundos. Si es 0, la espera es infinita. wait(long tiempo, int nanos): igual, pero con precisión de nanosegundos. wait(): igual que wait(0) notify(): despierta a una única hebra de las que están esperando. notifyall(): despierta a todas las hebras. 19 Señalización - Métodos Todos los métodos anteriores son finales. Todas las variantes de wait(...) pueden lanzar la excepción InterruptedException. notify() despierta una hebra cualquiera. No se garantiza que sea la que más tiempo lleva esperando. Es solo interesante cuando se está seguro de que solo habrá una hebra esperando. Es peligroso. notifyall() despierta a todas. Es más seguro. Requiere más que nunca el uso de while() en lugar de if(!condition) wait(); 20 10
11 Interbloqueos La existencia de varias hebras, y el uso de la exclusión mutua puede ocasionar la aparición de interbloqueos, en el que ninguna de dos hebras puede ejecutarse porque están esperando algo de la otra. Java no controla el interbloqueo. No se preocupa de detectarlo. Es responsabilidad del diseñador de la aplicación ser cuidadoso para evitar la aparición de interbloqueos. 21 Grupos de hebras Las hebras se estructuran de forma jerárquica. Cada nodo del árbol es un objeto de la clase ThreadGroup. Cada ThreadGroup almacena un conjunto de hebras, y otro de ThreadGroup s que contiene. Se puede establecer una prioridad al grupo, que actúa como cota máxima de las prioridades de las hebras que contiene. Cuando alguna de las hebras finaliza por una excepción, se llama al método uncaughtexception(...) de su grupo
12 Métodos stop( ( ) El método stop() fuerza el lanzamiento de la excepción ThreadDeath. Es subclase de Error para que no se capture en los catch(exception e) muy habituales. Es la única excepción ignorada por el objeto ThreadGroup. Mediante stop(throwable) se puede forzar el lanzamiento de cualquier otra excepción. Los dos métodos están desaconsejados (deprecated) porque pueden dejar objetos en estados inestables. 23 Otros métodos El método suspend() detiene la hebra hasta que se llama a resume() de la misma hebra. El método destroy() destruye completamente la hebra, sin liberar ninguno de los cerrojos que pudiera tener bloqueados. No está implementado. Los tres métodos están desaconsejados (deprecated) porque pueden causar la aparición de exclusión mútua
13 La máquina virtual Por hebra Por JVM Pila de Frames Heap PC Área de Código (text) Tabla de constantes 25 Frames Array de variables locales Pila de operandos Referencia a la tabla de constantes Los long y double ocupan dos entradas. El resto solo una
14 Llamada a métodos Las instrucciones que llaman a un método toman como parámetro la posición dentro de la tabla de constantes donde está el nombre del método. Hay cuatro instrucciones distintas para llamar, según el tipo de método (estático, de un interfaz, privados o de superclases, y normales). Todas miran las características del método para crear un nuevo frame. Además si es synchronized, la hebra pasa a competir por la obtención del cerrojo del objeto. 27 Fin de un método Existen instrucciones return para todos los tipos básicos y para referencias, que obtienen el valor a devolver de la pila de operandos. Cuando el método termina, se elimina el frame, el frame anterior pasa a ser el frame actual, y el valor devuelto se apila en la pila de operandos de dicho frame. Si no hay más frames, la hebra finaliza. Si el método que finaliza era synchronized, el cerrojo del objeto se libera
15 Fin de un método Existe la instrucción athrow con la que se lanza una excepción. Si hay algún manejador de esa excepción, se trata. Si no, se finaliza el método como antes, liberando el cerrojo si el método era synchronized, y lanzando la excepción en el método anterior. Si no quedan más métodos, se finaliza la hebra, y se llama al método del grupo de la hebra uncaughtexception(...). 29 Synchronized(o) Se implementan usando dos instrucciones de la máquina virtual. Las dos esperan la referencia al objeto cuyo cerrojo se quiere manejar: monitorenter: obtiene el cerrojo, o suspende la hebra hasta que lo consiga. monitorexit: libera el cerrojo. Para un correcto funcionamiento de synchronized(o) se requiere la cooperación del compilador que debe vigilar todas las posibles salidas del bloque
16 Nuevas hebras No existe una instrucción en la máquina virtual que cree nuevas hebras. Se utilizan métodos nativos. La mayoría de los métodos de la clase Thread lo son. La llamada al método start() creará un nuevo motor de ejecución independiente al del que llama al método. La implementación es específica de la plataforma y de la implementación de la máquina virtual para dicha plataforma. Tampoco hay instrucciones para wait(...), notify() o notifyall(). 31 Gestión de memoria Hay una memoria principal, compartida por todas las hebras. Cada hebra tiene su propio espacio de memoria, con copias locales de variables de la memoria global. Se requieren mecanismos para sincronizar las copias locales con la memoria principal. La especificación de la máquina virtual obliga a que se cumplan ciertas normas en las actualizaciones
17 Operaciones atómicas Memoria principal read: transmite el contenido de una variable a la memoria local de una hebra. write: almacena el valor transmitido por la memoria local de una hebra en la memoria principal. lock: bloquea un cerrojo. Se ejecuta de forma sincronizada con una hebra. unlock: desbloquea un cerrojo. Se ejecuta de forma sincronizada con una hebra. 33 Operaciones atómicas Memoria local de una hebra load: recoge el valor de un read y lo copia en la memoria local. store: envía el valor de una variable de la memoria local a la memoria principal. Hebra use: transfiere el valor de una variable de la memoria local al motor de ejecución. assign: copia un valor del motor de ejecución a la memoria local de la hebra
18 Operaciones atómicas Thread Memoria de trabajo load x store use assign x x x read Memoria principal x Copia maestra write Motor de ejecución 35 Operaciones atómicas La especificación de la JVM marca restricciones en el uso de las operaciones. En general, no se especifica el momento en el que debe actualizarse la memoria principal. Solo se obliga a hacer copia en los lock/unlock. En principio, todas las operaciones son de 32 bits. Las lecturas/escrituras de double y long se hacen en dos partes. Esto puede original lecturas de valores incorrectos por otras hebras, si obtienen el valor cuando solo se ha realizado una de las operaciones de escritura
19 Variables volatile Si se desea forzar la escritura en memoria principal de una variable compartida, puede usarse un lock/unlock. También pueden utilizarse variables volatile. Las reglas en las operaciones atómicas para estas variables son más estrictas. Se fuerza que por cada load haya un read, y que por cada store haya un write. Se trabaja así siempre con el valor de la copia principal. No obstante puede haber problemas en long y double. 37 Bibliografía The Java Language Specification 2nd edition. The Java Virtual Machine Specification 2nd edition. The Java Programming Languaje 2nd edition. D. Lea, Concurrent Programming in Java. Design Principles and Patterns, Addison Wesley
CONCURRENCIA EN JAVA. Diseño de Sistemas Operativos Avanzados 2000/2001. Pedro Pablo Gómez Martín
CONCURRENCIA EN JAVA Diseño de Sistemas Operativos Avanzados 2000/2001 Pedro Pablo Gómez Martín Concurrencia en Java 1 ÍNDICE ÍNDICE... 1 INTRODUCCIÓN... 3 CREAR UNA NUEVA HEBRA... 3 FINALIZACIÓN... 5
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 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 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 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 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 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 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 detallesUso de excepciones en Java
Uso de excepciones en Java En Java, cuando se produce un error en un método, se lanza un objeto Throwable. Cualquier método que haya llamado al método puede capturar la excepción y tomar las medidas que
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 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 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 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 detallesun programa concurrente
Introducción un programa concurrente asumimos que tengamos un programa concurrente que quiere realizar acciones con recursos: si los recursos de los diferentes procesos son diferentes no hay problema,
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 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 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 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 detallesThreads. 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 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 detallesEXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:
EXCEPCIONES EN JAVA Uno de los problemas más importantes al escribir aplicaciones es el tratamiento de los errores. Errores no previstos que distorsionan la ejecución del programa. Las excepciones de Java
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 detallesExcepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones
Programación Orientada a Objetos en Java Curso 2006-2007 Tema 6 Excepciones Gonzalo Méndez Pozo Dpto. de Ingeniería de Software e Inteligencia Artificial Universidad Complutense de Madrid Qué son? Excepciones
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 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 detallesTransacciones y bloqueos en SQL-Server
Transacciones y bloqueos en SQL-Server (Información para el uso desde Axapta) Introducción En este documento vamos a intentar explicar cuatro conceptos básicos acerca de las transacciones y los bloqueos
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 detallesDefinición de clases: Herencia, polimorfismo, ligadura dinámica
Tema 7 Definición de clases: Herencia, polimorfismo, ligadura dinámica Con alguna frecuencia es necesario definir clases de objetos entre las cuales hay elementos comunes. En una aplicación en la cual
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 detallesConcurrencia. Bibliografía: Introducción a los Sistemas de Bases de Datos Date, C.J.
Concurrencia Bibliografía: Introducción a los Sistemas de Bases de Datos Date, C.J. Concurrencia La mayor parte de los DBMS son sistemas para múltiples usuarios Se permite a cualquier cantidad de transacciones
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 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 detallesPOLIMORFISMO "una interfaz, múltiples métodos".
"una interfaz, múltiples métodos". 20/02/2007 Polimorfismo 2 Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple)
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 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 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 detallesPROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Más detallesReceta general para resolver problemas de sincronización con semáforos
Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que
Más detallesJava Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
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 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 detallesProgramación orientada a objetos
Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual smuelas@fi.upm.es! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!
Más detallesHerramientas Concurrentes en JAVA
Herramientas Concurrentes en JAVA David Jesús Horat Flotats ÍNDICE 1. Introducción n a Java 2. Herramientas Concurrentes en Java 3. Lectores Escritores (2º) 4. Filósofos comensales 5. Chat usando RMI 6.
Más detallesProgramación Orientada a Objetos. Java: Excepciones
Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey LIDIA Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España
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 detallesAsignación de Procesadores
INTEGRANTES: Asignación de Procesadores Un sistema distribuido consta de varios procesadores. Estos se pueden organizar como colección de estaciones de trabajo personales, una pila pública de procesadores
Más detallesMANUAL COPIAS DE SEGURIDAD
MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta
Más detallesSolución al Examen de Prácticas de Programación (Ingeniería Informática)
Solución al Examen de Prácticas de Programación (Ingeniería Informática) Junio 2006 Parte I. Cuestiones (3 puntos=50% nota del examen) 1) Se desea crear un conjunto de clases para representar en un programa
Más detallesEXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011
EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso 2010 2011. Cuatrimestre de otoño. 17 de Enero de 2011 1. (0,75 PUNTOS) Identificad a continuación las sentencias que son ciertas, descartando
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 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 detallesInstalación. Interfaz gráfico. Programación de Backups. Anexo I: Gestión de la seguridad. Manual de Usuario de Backup Online 1/21.
1/21 Instalación Interfaz gráfico Requerimientos Proceso de instalación Pantalla de login Pantalla principal Descripción de los frames y botones Programación de Backups Botones generales Botones de programación
Más detallesSistemas de archivos distribuidos. Alvaro Ospina Sanjuan alvaro.ospina@correo.upb.edu.co
Sistemas de archivos distribuidos Alvaro Ospina Sanjuan alvaro.ospina@correo.upb.edu.co >Abstracción del sistema operativo para representar y organizar los recursos de almacenamiento >Se debe hacer la
Más detallesConcurrencia en.net David Jesús Horat Flotats
Concurrencia en.net David Jesús Horat Flotats ÍNDICE 1. Introducción n a.net 2. Sincronización n en.net 2.1 Contextos sincronizados 2.2 Método M Synchronized 2.3 Regiones de código c sincronizado 2.4 Sincronización
Más detallesProf. Dr. Paul Bustamante
Prácticas de C++ Practica Nº 8 Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante ÍNDICE ÍNDICE... 1 1. INTRODUCCIÓN... 1 1.1 EJERCICIO 1: HERENCIA Y POLIMORFISMO I... 1 1.2 EJERCICIO
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 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 detallesApp para realizar consultas al Sistema de Información Estadística de Castilla y León
App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda
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 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 detalles2.11.1 CONTRATAS Y SUBCONTRATAS NOTAS
NOTAS 1 Cuando en un mismo centro de trabajo desarrollen actividades trabajadores de dos o más empresas, éstas deberán cooperar en la aplicación de la normativa sobre prevención de riesgos laborales. A
Más detallesPatrones para persistencia (I) Ingeniería del Software II
Patrones para persistencia (I) Ingeniería del Software II 1 Patrones para la construcción del esquema relacional En todos los ejemplos realizaremos transformaciones del siguiente diagrama de clases: Figura
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 detallesUniversidad de Cantabria corcuerp@unican.es
Herencia Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria corcuerp@unican.es Objetivos Aprender los conceptos de herencia Comprender la forma de derivar una
Más detallesMensajes. Interbloqueo
CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose
Más detallesCapítulo 1 Introducción a la Computación
Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:
Más detallesSi bien Pascal-FC no trae algunas de las características de Pascal como:
PROCESOS VS. HILOS: Ciclo de vida de un proceso: es prácticamente un estándar en todos los sistemas operativos. En principio el proceso no existe, es creado, luego pasa a listo (el proceso esta en condiciones
Más detallesINTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:
INTERRUPCIONES La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales: a)consultas (POLLING): Se comprueban cíclicamente,
Más detallesTema 4. Gestión de entrada/salida
Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada
Más detallesEntorno de Ejecución del Procesador Intel Pentium
Arquitectura de Ordenadores Arquitectura del Procesador Intel Pentium Abelardo Pardo abel@it.uc3m.es Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Entorno de Ejecución del Procesador
Más detallesIntermediación ORDENES ENLAZADAS. Características y Propiedades
Intermediación ORDENES ENLAZADAS. Características y Propiedades INDICE INTRODUCCIÓN TIPOS Y FUNCIONAMIENTO ACCESO A LAS ÓRDENES ENLAZADAS CONFIGURACIÓN TRADING TOOLS. Ejemplo de envío de órdenes enlazadas
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 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 detallesArquitectura de sistema de alta disponibilidad
Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los
Más detallesWorkflow, BPM y Java Resumen de la presentación de Tom Baeyens
Workflow, BPM y Java Resumen de la presentación de Tom Baeyens Workflow, BPM y Java Página 1 de 11 1. Introducción Tom Baeyens es el fundador y arquitecto del proyecto de JBoss jbpm, la máquina de workflow
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 detallesA continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante
Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,
Más detallesOficina Online. Manual del administrador
Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal
Más detallesINDICE. 1. Introducción... 4. 2. El panel Entities view... 5. 3. El panel grafico... 6. 4. Barra de botones... 6. 4.1. Botones de Behavior...
MANUAL DE USUARIO INDICE 1. Introducción... 4 2. El panel Entities view... 5 3. El panel grafico... 6 4. Barra de botones... 6 4.1. Botones de Behavior... 7 4.2. Botones de In-agents... 8 4.3. Botones
Más detallesPráctica 5. Curso 2014-2015
Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas
Más detallesPROGRAMACIÓN PÁGINAS WEB CON PHP
PROGRAMACIÓN PÁGINAS WEB CON PHP Curso de desarrollo de aplicaciones web. Para ello se estudia la programación de la parte cliente con JavaScript y la programación de la parte servidor con la tecnología
Más detallesEstructuras de Sistemas Operativos
Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar
Más detallesemail Proxy Introducción
email Proxy Introducción Al momento no se cuenta en Velneo vserver con herramientas para el envío de correo electrónico desde el servidor, algo que resulta sumamente útil ya que el desarrollador se desentiende
Más detallesProgramación en Java. Programación en OO
Programación en OO Lección 4:Programación en OO 1. Herencia 2. Modificadores de Acceso 3. Interfaces Herencia Es la acción en la que una clase obtiene los métodos y propiedades definidos en otra clase,
Más detallesUnidad II: Administración de Procesos y del procesador
Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros
Más detallesCapítulo 5 Programación del algoritmo en LabVIEW
Programación del algoritmo en LabVIEW En este capítulo se describen las funciones que se emplearon para implementar el control PID wavenet en LabVIEW. El algoritmo wavenet fue implementado en LabVIEW para
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 detallesGestión de la Configuración
Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de
Más detallesRealización de copias de seguridad en caliente
Realización de copias de seguridad en caliente BASE 100, S.A. www.base100.com Índice 1. INTRODUCCIÓN... 3 2. FUNCIONAMIENTO... 4 2.1 VARIABLES DE ENTORNO... 4 2.2 EJEMPLO... 5 2 : : 6 1. Introducción En
Más detallesSERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA
SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura
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 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 detallesUNIDADES FUNCIONALES DEL ORDENADOR TEMA 3
UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:
Más detalles4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios
Más detallesEjercicio 1 (3 puntos).-
URJC Ingeniería Técnica de Gestión Abril 2011 Asignatura: SOFTWARE AVANZADO Normas: La prueba consta de 2 ejercicios. La máxima nota del examen es un 8. Siendo la práctica la que añade los 2 puntos que
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 detallesProgramación Orientada a Objetos. Java: Excepciones
Programación Orientada a Objetos Java: Excepciones Eduardo Mosqueira Rey Laboratorio de Investigación y desarrollo en Inteligencia Artificial Departamento de Computación Universidade da Coruña, España
Más detallesSISTEMAS OPERATIVOS AVANZADOS
SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3
Más detallesAdaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.
Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra
Más detallesGESTIÓN DE REDES PARTE III
PARTE III Arquitectura de Gestión OSI 3.1 Introducción La gestión de red OSI, pensada inicialmente para la gestión de las propias redes OSI, debe su implantación práctica al ser adoptada por los estándares
Más detalles