Programación concurrente
|
|
|
- Pablo Soler Reyes
- hace 8 años
- Vistas:
Transcripción
1 Programación concurrente Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected]
2 Programación concurrente Consiste en la ejecución simultánea de varias tareas, que pueden interactuar entre sí. Paso de mensajes. Acceso a memoria compartida. Un hilo (thread) es una tarea (conjunto de instrucciones) que puede ejecutarse en paralelo con las demás. Estos hilos pueden ser todos ejecutados por un sólo procesador, o distribuidos entre los distintos procesadores. La asignación de hilos a procesadores es realizada por el sistema operativo. 2
3 Contenidos Operaciones con hilos Acceso a memoria compartida Condiciones de carrera Secciones críticas Multitarea con Swing 3
4 Creación de hilos Para crear un hilo, se deberá crear una clase que implemente la interfaz Runnable. public interface Runnable { void run(); La clase ha de tener un método run(), que realizará las acciones correspondientes. 4
5 Creación de hilos Para definir las acciones que se realizan en un hilo, se deberá crear una clase que implemente la interfaz Runnable. public interface Runnable { void run(); La clase ha de tener un método run(), que realizará las acciones correspondientes. 5
6 Ejemplo public class Enanito implements Runnable { private String nombre; public Enanito(String nombre) { this.nombre = nombre; public void run() { for (int contador = 1; contador <= 10; contador++) { System.out.printf("%s cuenta hasta %d\n", nombre, contador); System.out.printf("%s terminó\n", nombre); 6
7 Creación de hilos El método tradicional de creación de hilos consiste en crear una instancia de la clase Thread, y pasarle el objeto Runnable correspondiente mediante su constructor. A continuación se debe llamar al método start() del objeto thread correspondiente para iniciar su ejecución. 7
8 Ejemplo public class Test1 { public static void main(string[] args) { String[] nombres = {"Sabio", "Gruñón", "Mudito", "Dormilón", "Tímido", "Tontín", "Bonachón"; for (String nomb : nombres) { Enanito e = new Enanito(nomb); Thread t = new Thread(e); t.start(); 8
9 Ejemplo 9
10 Creación de hilos Desde la versión 5 de Java, no es necesario crear objetos de la clase Thread directamente. Existe un objeto ExecutorService (paquete java.util.concurrent) que recibe las tareas a ejecutar (objetos que implementan Runnable) y las distribuye en distintos hilos. Existen varios tipos de ExecutorService Implementan distintas políticas de distribución de tareas en hilos. Un ExecutorService no tiene constructor. Se crea mediante métodos estáticos contenidos en la clase Executors. 10
11 Ejemplo public class Test2 { public static void main(string[] args) { String[] nombres = {"Sabio", "Gruñón", "Mudito", "Dormilón", "Tímido", "Tontín", "Bonachón"; ExecutorService exec = Executors.newCachedThreadPool(); for (String n : nombres) { Enanito e = new Enanito(n); exec.execute(e); exec.shutdown(); No admitir más tareas en el Executor 11
12 CachedThreadPool Tipos de ExecutorService Genera tantos hilos como considere necesarios. Procura reciclar los hilos cuya tarea ha terminado. FixedThreadPool Crea, al inicio, una cantidad de hilos fija. SingleThreadExecutor Como un FixedThreadPool, pero con un único hilo. Si se envían varias tareas a un SingleThreadExecutor, se pondrán en cola. 12
13 Dormir un hilo public class Enanito implements Runnable { public void run() { for (int contador = 1; contador <= 10; contador++) { System.out.printf("%s cuenta hasta %d\n", nombre, contador); try { TimeUnit.SECONDS.sleep(1); catch (InterruptedException e) { System.out.println("Se ha interrumpido"); System.out.printf("%s terminó\n", nombre); Detener hilo 1 seg. 13
14 Prioridad de hilos public class Enanito implements Runnable { public void run() { if (nombre.equals("acaparadorcito")) { else { Thread.currentThread().setPriority(Thread.MAX_PRIORITY); Thread.currentThread().setPriority(Thread.MIN_PRIORITY); for (int contador = 1; contador <= 10; contador++) { System.out.printf("%s cuenta hasta %d\n", nombre, contador); System.out.printf("%s terminó\n", nombre); 14
15 Prioridad de hilos public class Test2 { public static void main(string[] args) { String[] nombres = {"Sabio", Acaparadorcito, "Gruñón", "Mudito", "Dormilón", "Tímido", "Tontín", "Bonachón"; ExecutorService exec = Executors.newCachedThreadPool(); for (String n : nombres) { Enanito e = new Enanito(n); exec.execute(e); exec.shutdown(); 15
16 Esperar la finalización de un hilo El método awaittermination de ExecutorService permite detener el hilo que ejecuta dicho método hasta que los hilos del servicio ejecutor terminen. Recibe como parámetro una cantidad de tiempo máximo a esperar, cuya unidad de medida es el segundo parámetro. Lanza una excepción InterruptedException si el la espera se interrumpe externamente. 16
17 Esperar la finalización de un hilo public class Test2 { public static void main(string[] args) { String[] nombres = {"Sabio", "Gruñón", "Mudito", "Dormilón", "Tímido", "Tontín", "Bonachón"; ExecutorService exec = Executors.newCachedThreadPool(); for (String n : nombres) { Enanito e = new Enanito(n); exec.execute(e); exec.shutdown(); try { exec.awaittermination(100, TimeUnit.SECONDS); System.out.println("Los siete enanitos han terminado"); catch(interruptedexception e) { System.out.println("Se interrumpió"); 17
18 Contenidos Operaciones con hilos Acceso a memoria compartida Condiciones de carrera Secciones críticas Multitarea con Swing 18
19 Acceso a memoria compartida Supongamos que ahora los hilos manipulan una zona de memoria común. public class Contador { private int valor; public Contador() { valor = 0; public void incrementar() { valor++; public int getvalor() { return valor; 19
20 Acceso a memoria compartida public class Enanito implements Runnable { private String nombre; private Contador contador; public Enanito(String nombre, Contador contador) { this.nombre = nombre; this.contador = contador; public void run() { for (int i = 0; i < 1000; i++) contador.incrementar(); Cada enanito incrementa el contador 1000 veces 20
21 Acceso a memoria compartida public class Test2 { public static void main(string[] args) { String[] nombres = {"Sabio", "Gruñón", "Mudito", "Dormilón", "Tímido", "Tontín", "Bonachón"; Contador c = new Contador(); ExecutorService exec = Executors.newCachedThreadPool(); for (String n : nombres) { Enanito e = new Enanito(n, c); exec.execute(e); exec.shutdown(); try { exec.awaittermination(100, TimeUnit.SECONDS); System.out.println("Los siete enanitos han terminado"); catch(interruptedexception e) { System.out.println("Se interrumpió"); Todos los enanitos incrementan el mismo contador System.out.printf("El valor final del contador es: %d\n", c.getvalor()); 21
22 Acceso a memoria compartida El valor final del contador debería ser Sin embargo: 22
23 Condiciones de carrera contador = 0 T2 T1 contador++ 23
24 Condiciones de carrera contador = 0 T2 T1 LOAD contador ADD 1 STORE contador 24
25 Condiciones de carrera Registro = 0 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 25
26 Condiciones de carrera Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 26
27 Condiciones de carrera Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 1 27
28 Condiciones de carrera Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 1 28
29 Condiciones de carrera Registro = 1 Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 1 29
30 Condiciones de carrera Registro = 2 Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 1 30
31 Condiciones de carrera Registro = 2 Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 2 31
32 Condiciones de carrera contador = 2 OK Registro = 1 Registro = 2 T1 T2 LOAD contador ADD 1 STORE contador 32
33 Condiciones de carrera contador = 0 T2 T1 LOAD contador ADD 1 STORE contador 33
34 Condiciones de carrera Registro = 0 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 34
35 Condiciones de carrera Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 35
36 Condiciones de carrera Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 36
37 Condiciones de carrera Registro = 0 Registro = 1 T2 T1 LOAD contador ADD 1 STORE contador contador = 0 37
38 Condiciones de carrera Registro = 1 T2 LOAD contador ADD 1 STORE contador contador = 1 38
39 Condiciones de carrera Registro = 1 Registro = 1 T1 T2 LOAD contador ADD 1 STORE contador contador = 1 39
40 Condiciones de carrera Registro = 1 Registro = 1 T1 T2 LOAD contador ADD 1 STORE contador contador = 1 40
41 Condiciones de carrera Registro = 1 Registro = 1 T1 T2 LOAD contador ADD 1 STORE contador contador = 1 41
42 Condiciones de carrera Registro = 1 Registro = 1 T1 T2 LOAD contador ADD 1 STORE contador contador = 1 42
43 Condiciones de carrera Registro = 1 Registro = 1 T1 T2 LOAD contador ADD 1 STORE contador contador = 1 43
44 Secciones críticas Idealmente, desearíamos que sólo un hilo pudiese ejecutar simultáneamente a determinadas regiones del programa exclusión mutua. LOAD contador ADD 1 STORE contador 44
45 Secciones críticas Java proporciona un mecanismo de exclusión mutua integrado en el lenguaje. Cada objeto tiene asociado un candado (lock, o monitor). Se utiliza la palabra synchronized para especificar zonas de exclusión mutua dentro del código. synchronized (objeto) { sentencias; 45
46 Secciones críticas synchronized (objeto) { sentencias; Cuando la ejecución de un hilo llega a un bloque synchronized, adquiere el candado del objeto correspondiente, y lo libera cuando abandona dicho bloque. Ningún otro hilo podrá entrar en el bloque synchronized hasta que el hilo poseedor del candado lo libere. 46
47 Ejemplo public class Enanito implements Runnable { public void run() { for (int i = 0; i < 1000; i++) { synchronized(contador) { contador.incrementar(); 47
48 Ejemplo public class Enanito implements Runnable { public void run() { for (int i = 0; i < 1000; i++) { synchronized(contador) { contador.incrementar(); 48
49 Solución alternativa Es aconsejable delimitar la zona de exclusión mutua en el código del propio contador, en lugar de en el código de los enanitos. public class Contador { private int valor; public Contador() { valor = 0; public void incrementar() { synchronized(this) { valor++; public int getvalor() { return valor; 49
50 Solución alternativa Es aconsejable delimitar la zona de exclusión mutua en el código del propio contador, en lugar de en el código de los enanitos. public class Contador { private int valor; public Contador() { valor = 0; public synchronized void incrementar() { valor++; public int getvalor() { return valor; 50
51 Contenidos Operaciones con hilos Acceso a memoria compartida Condiciones de carrera Secciones críticas Multitarea con Swing 51
52 Multitarea en Swing 52
53 Multitarea en Swing class GestorBotonOK implements ActionListener { public void actionperformed(actionevent e) { String entrada = jtextfield1.gettext(); if (entrada.isempty()) { JOptionPane.showMessageDialog(null, "No has introducido ningún número"); else { try { int n = Integer.parseInt(entrada); long result = fib(n); Cómputo largo jlabel3.settext(string.valueof(result)); catch (NumberFormatException exc) { JOptionPane.showMessageDialog(null, "Has de introducir un número"); public long fib(int n) { 53
54 Multitarea en Swing El cálculo del número de Fibonacci indicado se realiza desde el mismo hilo que se encarga de atender los eventos de la interfaz. Mientras se realiza el cómputo del número de Fibonacci indicado, la interfaz no responde. Es necesario realizar dicho cómputo en un hilo, en paralelo con la gestión de eventos de la interfaz. 54
55 Multitarea en Swing Hilo de Swing Llamar a actionperformed(..)... Atender a eventos del usuario Hilo nuevo Cálculo de Fibonacci.... Actualizar JLabel Los componentes de Swing no ofrecen acceso concurrente. Sólo se pueden modificar los componentes de Swing desde el hilo de Swing. 55
56 Multitarea en Swing Extendiendo la clase SwingWorker podemos crear tareas que se ejecuten en paralelo, y puedan modificar los componentes de la interfaz de manera segura. 56
57 Multitarea en Swing public class CalculadorFibonacci extends SwingWorker<Long, Object> { private int n; private JLabel resultado; public CalculadorFibonacci(int n, JLabel resultado) { this.n = n; this.resultado = resultado; public Long doinbackground() { return fib(n); protected void done() { try { Long res = get(); resultado.settext(res.tostring()); catch (InterruptedException e) { JOptionPane.showMessageDialog(null, "Interrumpido: " + e.getmessage()); catch (ExecutionException e) { JOptionPane.showMessageDialog(null, "Error de ejecución: " + e.getmessage()); private long fib(int n) { 57
58 Multitarea en Swing class GestorBotonOK implements ActionListener { public void actionperformed(actionevent e) { String entrada = jtextfield1.gettext(); if (entrada.isempty()) { JOptionPane.showMessageDialog(null, "No has introducido ningún número"); else { try { int n = Integer.parseInt(entrada); CalculadorFibonacci calc = new CalculadorFibonacci(n, jlabel3); calc.execute(); catch (NumberFormatException exc) { JOptionPane.showMessageDialog(null, "Has de introducir un número"); 58
59 Referencias P. Deitel, H. Deitel Java. How to Program (9th Edition) Caps. 26 B. Eckel Thinking in Java (3rd Edition) Cap. 13 Sincronización mediante paso de mensajes. 59
Concurrencia 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
TEMA 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
Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.
SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:
Java 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
Hebras 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
1 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
Federico 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
Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones
Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice
Multitarea 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
(THREADS) Ing. Laura Sandoval Montaño, Ing. Manuel Enrique Castañeda Castañeda PAPIME 104911
(THREADS) HILOS JAVA La Máquina Virtual Java (JVM) es un sistema multihilo. La JVM gestiona todos los detalles, asignación de tiempos de ejecución, prioridades, etc., de forma similar a como gestiona un
Java para programadores
Java para programadores Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Contenidos Variables. Tipos
Programació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
MONITORES 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
Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas
2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos
Java: 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
Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática
Excepciones y E/S Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Contenidos Generación de excepciones.
Concurrencia 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()
Programació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
Java 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
Concurrencia 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
Multitarea En Swing. Varios hilos trabajadores, también conocidos como hilos en segundo plano.
Multitarea En Swing 1.- Introducción. En las aplicaciones Java que usan Swing es particularmente importante manejar con cuidado la concurrencia. Una aplicación Java que usa Swing y que está bien desarrollada
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:
Tema 4. Excepciones en Java
Programación en Java Tema 4. Excepciones en Java Luis Rodríguez Baena Facultad de Informática Excepciones (I) Permiten la captura de errores en tiempo de ejecución. El control de excepciones permite extraer
Programació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
Benemé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
75-62 Técnicas de Programación Concurrente II 2004 java Threads
75-62 Técnicas de Programación Concurrente II 2004 java Threads FIUBA Ing. Osvaldo Clúa Bibliografía: tutorial de Java en http://java.sun.com Un buen libro (algo teórico) es Garg: Concurrent and Distributed
Java 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
Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC)
Estructura de las Aplicaciones Orientadas a Objetos El patrón Modelo-Vista-Controlador (MVC) Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial
GESTIÓ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
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...
Introducción a Java LSUB. 30 de enero de 2013 GSYC
Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial
Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.
Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1
- Compilar y ejecutar programas en Java - Estructura básica de una clase - El comando javac - El comando java - Introducción al IDE de desarrollo
- Introdución a Java - Breve historia de Java - Características del lenguaje Java - Estructura del JDK 1.6 - Documentación del API (JavaDoc) - Instalar y configurar el ambiente de desarrollo - La variable
Java Avanzado Facultad de Ingeniería. Escuela de computación.
2 Java Avanzado Facultad de Ingeniería. Escuela de computación. Java Avanzado. Guía 5 3 Introducción Este manual ha sido elaborado para orientar al estudiante de Java Avanzado en el desarrollo de sus prácticas
Monitores 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
Hilos. Índice. Copyright 2012-13 Dept. Ciencia de la Computación e IA All rights reserved.
Índice 1 Creación de hilos... 2 2 Ciclo de vida y prioridades...3 2.1 Prioridades de los hilos... 4 2.2 Interrupción de un hilo...4 3 Sincronización de hilos... 5 3.1 Sincronización reentrante...6 4 Bloques
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI
PROGRAMACION DISTRIBUIDA MobileTracker: Ejemplo de implementación con RMI Héctor Pérez 2 MobileTracker: Especificación El computador de la torre de control ejecuta el servicio Follower que registra los
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU
Sistemas Distribuidos Java RMI (Remote Method Invocation) Alberto Lafuente Mikel Larrea Dpto. ATC, UPV/EHU Contenido Interfaz Implementación Servidor Cliente Puesta en marcha de la aplicación: Compilador
APELLIDOS:... NOMBRE:... GRUPO:... NÚMERO DE EXPEDIENTE:...
Cuadernillo de examen ASIGNATURA Laboratorio de Sistemas Operativos Abiertos (Java) CÓDIGO 321 CONVOCATORIA Extraordinaria de Septiembre de 2003 PLAN DE ESTUDIOS 1996 ESPECIALIDAD Sistemas CURSO 2002/2003
Secretos 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 [email protected]
GUÍA DE TRABAJO GRADO 11. Articulación SENA Programación de Software Ing. Néstor Raúl Suarez Perpiñan Página 1 de 6
Página 1 de 6 Tema: PROCEDIMIENTOS ALMACENADOS SQL SERVER Objetivo: Adquirir los conocimientos necesarios para desarrollar e implementar procedimientos almacenados utilizando SQL Server y lenguaje C# I.
FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005
Dpto. de Ingeniería de Sistemas Telemáticos E.T.S.I. Telecomunicación Universidad Politécnica de Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005 Normas de examen: Con libros y apuntes Duración: 2 horas
class 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)
TEMA 6: API Java para Concurrencia de Alto Nivel
TEMA 6: API Java para Concurrencia de Alto Nivel CONTENIDO API Java 5 de Control de la Concurrencia Clases para Gestión de Variables Atómicas Clase java.concurrent.util.concurrent.semaphore Clase java.concurrent.util.concurrent.cyclicbarrier
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] 1 Índice General Conceptos sobre ordenadores Concepto
en otra máquina exactamente de la misma manera que si se encontrará en la misma máquina
Máquina A Máquina B Máquina C Lo ideal sería tener un sistema distribuido orientado a objetos que permita: 1)Invocar un método de un objeto que se localiza en otra máquina exactamente de la misma manera
PROGRAMACIÓ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
Modulo 11. Clases y Objetos en Java
El siguiente texto es una traducción no oficial del documento publicado por el grupo JEDI, Introduction to Programming 1, no pretende en ningún momento reemplazar los contenidos generados por este grupo.
Programació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
Modelo 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
Interfaces y Clases Internas. ELO329: Diseño y Programación Orientados a Objetos
Interfaces y Clases Internas ELO329: Diseño y Programación Orientados a Objetos Qué queremos decir con interfaces y clases internas? NOTA: El término interfaz aquí NO se refiere a las interfaces gráficas
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA. Daniel Díaz Sánchez
UNIVERSIDAD CARLOS III DE MADRID DEPARTAMENTO DE INGENIERÍA TELEMÁTICA Sockets para servidor Daniel Díaz Sánchez Florina Almenárez Andrés Marín Departamento de Ingeniería Telemática Universidad Carlos
Clase 34. Hilos. Qué es un hilo?
Clase 34 Hilos Qué es un hilo? Imagine un programa de Java que lee archivos grandes en Internet en distintos servidores. Algunos de ellos estarán sometidos a grandes cargas o tendrán conexiones lentas
Java 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
Interfaces gráficas con Swing
Interfaces gráficas con Swing Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Introducción Swing
Introducció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
Elementos léxicos del lenguaje de programación Java
Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores
1. Visión general de RMI
1. Visión general de RMI Java RMI permite al programador ejecutar métodos de objetos remotos utilizando la misma semántica que si fueran invocaciones locales (Véase Figura 1). Máquina Local (Cliente) Máquina
Object 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
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
Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría
Java en 3 horas Ampliación de Sistemas Operativos Rodrigo Santamaría Generalidades Desarrollado por Sun Hereda mucha de la sintaxis de C (1972) Fuertemente tipado y orientado a objetos Aplicaciones compiladas
Benemé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
1. 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
FACULTAD DE INGENIERÍA
NOMBRE DEL PROFESOR: Ing. Héctor Manuel Quej Cosgaya NOMBRE DE LA PRÁCTICA: Estructuras de decisión PRÁCTICA NÚM. [ 5 ] LABORATORIO: MATERIA: UNIDAD: TIEMPO: Centro de Ingeniería Computacional Lenguaje
Ejemplo de GUI con Swing
Ejemplo de GUI con Swing Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad Complutense Madrid Una aplicación Swing sencilla El
INTRODUCCION A LA PROGRAMACION EN JAVA
Departament d Arquitectura de Computadors INTRODUCCION A LA PROGRAMACION EN JAVA Índice Paso de parámetros en tiempo de ejecución Métodos static Atributos static Try-catch-finally Throws/throw 2 Paso de
Programació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
Introduciendo datos desde el
Introduciendo datos desde el teclado Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] Objetivos Crear programas interactivos que lean datos
Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans
Pág. N. 1 Desarrollo de aplicaciones con JAVA, JCreator, JDeveloper NetBeans Familia: Editorial: Autor: Tecnología de la Información y Computación Macro Manuel Torres Remon ISBN: 978-612-304-101-4 N. de
dit 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.
Pruebas de unidad con JUnit
Pruebas de unidad con JUnit Cuando se implementa software, resulta recomendable comprobar que el código que hemos escrito funciona correctamente. Para ello, implementamos pruebas que verifican que nuestro
JAVA 7 Los fundamentos del lenguaje Java
Presentación 1. Historia 9 1.1 Por qué Java? 9 1.2 Objetivos del diseño de Java 10 1.3 Auge de Java 11 2. Características de Java 12 2.1 El lenguaje de programación Java 12 2.1.1 Sencillo 13 2.1.2 Orientado
Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005
Pruebas de unidad utilizando JUnit Juan Manuel Fernández Peña, 2005 JUnit es una herramienta para la realización de pruebas de unidad de software desarrollado con Java, que es una herramienta de software
En este capitulo se estudiarán los conceptos relacionados a métodos, como lo son sobrecarga, métodos estáticos.
Lección 3: Creando clases 1. Definición de métodos 2. Sobrecarga de métodos 3. Definición de constructores 4. Creando miembros estáticos 5. Construcción e inicialización de objetos Objetivos En este capitulo
Encapsulación: clases y objetos
Encapsulación: clases y objetos Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) [email protected] Contenidos Clases
Experto Universitario en Desarrollo de Aplicaciones para Dispositivos Móviles. Sesión 1: Introducción al Lenguaje Java
Lenguaje Java Sesión 1: Introducción al Lenguaje Java 2012-2013 Depto. Ciencia de la Computación e IA Índice Introducción a Java Conceptos de POO Elementos de un programa Java Herencia, interfaces, polimorfismo
2. 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
Prá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
Patrones de diseño. Patrón básico Handler. Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez)
Patrones de diseño Patrón básico Handler Técnicas de Programación - Curso 2008/09 (Esther Guerra Sánchez) Patrones de diseño Introducción Objetivos: Diseño específico para el problema, pero general para
Programació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
Prá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
Repaso 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
James Gosling, creador de Java
Lo que Java intenta hacer y lo hace con bastante éxito, es abarcar dominios diferentes. De esa forma le permite efectuar trabajos para de aplicaciones del lado del servidor, del lado del cliente, para
Ejercicios de evaluación de fundamentos de programación en Java
Ejercicios de evaluación de fundamentos de programación en Java Jorge Martínez Ladrón de Guevara Editorial EME ISBN 978-84-96285-40-8 Contenido 1. Introducción a Java... 1 Test de evaluación...1 Ejercicios...4
ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS
ESCUELA SUPERIOR POLITECNICA DE CHIMBORAZO ESCUELA DE INGENIERIA EN SISTEMAS TAREA No. 02 ASIGNATURA: Aplicaciones Empresariales en JAVA DOCENTE: Ing. Paúl Paguay SEMESTRE: Noveno NOMBRE: Holger Morales
Aplicaciones Java. Juan Manuel Fernández Peña Curso 2011, 2013
Aplicaciones Java Juan Manuel Fernández Peña Curso 2011, 2013 Aplicación Una aplicación es una colección de clases y recursos adicionales, con un punto de inicio. El punto de inicio está dado por el método
Si 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
Programación multihebra
Programación multihebra by Scheme the API man 2000 ([email protected]) Qué es la programación multihebra? Podemos definir la programación multihebra o multihilo como un estilo de ejecucion en el que
CONCEPTOS BASICOS DEL LENGUAJE JAVA
CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten
PROGRAMACION DISTRIBUIDA
PROGRAMACION DISTRIBUIDA Ejemplo de uso de estrategias de diseño con RMI Héctor Pérez 2 Ejemplo de callback: SwiftEagle shot() setdirection() Target nearnessreport(target,observer) signal? explode() SwiftEagle
Threads o Hilos. Marco Besteiro y Miguel Rodríguez
En.NET, cuando se lanza una aplicación se crea un proceso y dentro de este proceso un hilo de ejecución o thread para el método Main. Es posible, a la vez que se ejecuta el método Main, que la aplicación
Introducció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
Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria
Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Servidores y Clientes Sincronizados Contenido Procesos Semáforos Sincronización Lectura y Escritura de Archivos Servidores Orientados a Conexión Servidores No Orientados
INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse
INSTALACION Y PRUEBA DEL PLUGIN WindowBuilder para trabajar Swing en Eclipse Por: María Consuelo Franky 2015 Contenido 1. Instalación para Eclipse 4.3 Kepler... 1 2. Prueba inicial del plugin WindowBuilder...
Otras formas de Sincronización en Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2008 Facultad de Ingeniería Universidad de Buenos Aires Otras formas de Sincronización en Java java.util.concurrent Class Exchanger
Universidad ORT - Arquitectura de Software. Requisitos
Requisitos Versión 1.5 (o superior) de la JDK de Java NetBeans 6.5 como IDE de desarrollo JBoss 4.2.x como Application Server Variable de entorno de Windows JAVA_HOME apuntando al directorio de instalación
