PROGRAMACION CONCURRENTE Y DISTRIBUIDA. IV.1 Executor framework: Threads pool
|
|
|
- Juana Carla Valdéz Vega
- hace 8 años
- Vistas:
Transcripción
1 PROGRAMACION CONCURRENTE Y DISTRIBUIDA IV.1 Executor framework: Threads pool J.M.Drake L.Barros 1
2 Tareas y Threads Existen dos modelo básicos de programas concurrentes: Un programa resulta de la actividad de objetos activos que interaccionan entre si directamente (peer to peer) o a través de recursos y servicios pasivos. Un programa resulta de la ejecución concurrente de tareas. Cada tarea es una unidad de trabajo abstracta y discreta que idealmente puede realizarse con independencia de las otras tareas. En las aplicaciones con estrategia cliente/servidor, las tareas resultan: Para implementar los clientes En los servidores para atender los requerimientos de los clientes. Organizar las actividades de los servicios como tareas concurrentes: Incrementa la capacidad de prestar servicios (throughput). Mejora los tiempos de respuesta (responsiveness) con carga de trabajo normal. Presenta una degradación gradual de prestaciones cuando la carga se incrementa. 2
3 Modelo cliente/servidor 3
4 Estrategias de ejecución de las tareas Hay diferentes estrategias para ejecutar las tareas que constituyen un programa: Ejecución secuencial de las tareas. Ofrecen bajo throughput y tiempo de respuesta. Creación explícita de un thread por cada tarea. La ejecución concurrente de las tareas mejora el uso de los recursos. Cuando las tareas son muy breves, la creación/destrucción de thread supone una sobre carga relevante. Con baja carga tiene buena respuesta. Con alta carga tiene peligro de fallo por agotamiento de los recursos. Creación de un grupo de thread (pool) para posteriormente aplicarlos Se elimina la sobrecarga de creación y destrucción de thread. Se limita la cantidad de recursos que se acaparan. Se consigue la estabilidad con alta carga. 4
5 Tres políticas de ejecución de tareas Thread simple Un thread por tarea Thread Thread Thread For cada tarea Tarea 1 Tarea 2 Tarea n Ejecuta tarea i Pool Thread Thread Thread Tarea 1 Tarea 2 Tarea n Thread pool 5
6 Executor framework Executor es la base de un framework flexible y potente de ejecución asíncrona de tareas que independiza la definición de las tareas como unidades lógicas de trabajo y los threads como los mecanismos con los que las tareas se ejecutan concurrentemente y asíncronamente. Tiene como objeto diferenciar la interfaz java.util.concurrent.executor: public interface Executor{ void execute(runnable command); Flexibiliza el mantenimiento de programas concurrentes a lo largo de su ciclo de vida, posibilitando el cambio de las políticas de ejecución sin cambiar el código de la propia ejecución. 6
7 Ejemplo de aplicación del framework Executor (1) public class Tarea implements Runnable{ // Atributos String nombre; // Constructor public Tarea(String elnombre){ nombre=elnombre; // Tarea realizar public void run(){ buscaeimprime(nombre); 7
8 Ejemplo de aplicación del framework Executor (2) import java.util.*; import java.util.concurrent.*; public class Gestor { public static void main(string[] args) { Vector<String> listanombres=new Vector<String>(); listanombres.add( - ); //Executor exec=new ThreadPerTaskExecutor(); //Executor exec=new OneThreadExecutor(); final Executor exec= Executors.newFixedThreadPool(10); try{sopa.cargasopa(args[0]);catch(ioexception e){; while (listanombres.size()!=0){ try{listanombres=sopa.leenombres(); catch (IOException e){ for (int i=0; i<listanombres; i++){ exec.execute (new Tarea(listaNombres.elementAt(i))); 8
9 Implementación de ejecutores import java.util.concurrent.*; public class ThreadPerTaskExecutor implements Executor{ public void execute(runnable r){ new Thread(r).start(); import java.util.concurrent.*; public class OneThreadExecutor implements Executor{ public void execute(runnable r){ r.run(); 9
10 Políticas de ejecución La utilidad de usar el framework Executor es poder modificar la política de ejecución de un conjunto de tareas con sólo el cambio mínimo de declarar un tipo de ejecutor diferente. Una política de ejecución incluye: Definir en que thread se ejecutan las tareas. Definir el orden en el que se ejecutan las tareas (FIFO,LIFO, Por Prioridad, etc. El número de tareas que se permiten ejecutar concurrentemente. El número de tareas que pueden encolarse en espera de ejecución. Selección de la tarea que debe ser rechazada si hay sobrecarga. Definir las acciones que deben ejecutarse antes y después de ejecutarse una tarea. La política de ejecución de tareas en una herramienta de gestión de recursos, y la óptima en cada caso depende de los recursos disponibles y de la calidad de servicio (throughput )que se requiere para la ejecución. 10
11 Thread pools Un thread pool es una estructura que gestiona un conjunto homogéneo de threads dispuestos a ejecutar la tarea que se les encargue a través de una cola de trabajos El ciclo de vida de un thread de un thread pool es muy simple: Espera en la cola de trabajo un nuevo trabajo. Los ejecuta Retorna a la cola a esperar el siguiente Ejecutar tareas a través de un pool de threads tiene ventajas: Reutilizar Thread ya creados implica ahorrase la actividades de creación y destrucción de nuevas tareas Disminuye el tiempo de respuesta, ya que las tareas están creadas cuando llega el requerimiento de ejecución del trabajo. Regulando la dimensión del pool se puede equilibrar la carga con los recursos de CPU y memoria que se requieren. 11
12 Servidor Web I 12
13 Servidor Web II: creación de un thread por cada petición 13
14 Servidor Web III: Solución Si la solicitud simplemente crea un nuevo hilo para cada nueva petición HTTP y el sistema recibe más peticiones de las que puede manejar de inmediato, la aplicación de pronto dejará de responder a todas las solicitudes. Con un límite en el número de los hilos que se pueden crear, la aplicación no servirá a las solicitudes HTTP tan pronto como entren, pero el servicio será lo más rápido que el sistema puede soportar. Una ventaja importante del pool de threads fijo es que las aplicaciones que lo utilizan se degradan gradualmente. Procodis 09: IV.1- Executor framework: Thread J.M.Drake L.Barros 14
15 Clase ThreadPoolExecutor Las instancias Java de thread pool se declaran con la clase java.util.concurrent. ThreadPoolExecutor que implementa ExecutorService (extends Executor): class ThreadPoolExecutor implements ExecutorService( int corepoolsize, // Número base de thread que se crean en el pool int maximumpoolsize, // Número máximo de threads que se pueden crear en el pool long keepalivetime, TimeUnit unit, // Tiempo en el que los thread que hay en // exceso respecto de corepoolsize se destruyen BlockingQueue<Runnable> workqueue, //Tipo de cola de tareas del pool ThreadFactory threadfactory, //Define la política con las que se crean los thread // dinámicamente (Prioridad, Grupo, naturaleza) RejectedExecutionHandler handler) // Define la política con la que se descartan las // tareas cuya ejecución es rechazada, Bien por el proceso de shutdown // o por que la cola de tareas es acotada. ) 15
16 Ejecutores definidos en las librerías Java En java.util.concurrent.executors hay cuatro factories que generan intancias concretas que implementan Executor y ofrecen políticas de ejecución diferentes: newfixedrhreadpool(int nthreads ) => Genera un pool de threads con un número de elementos constantes. Si alguno de ellos muere es sustituido por otro. newcachedthreadpool() => Genera un pool un número base de threads. Este número se incrementa si la carga de trabajo del thread crece. newsinglethreadexecutor() => crea un único thread que ejecuta secuencialmente las tareas que se le encominedan. Si el thread muere es sustituido por otro. newscheduledthreadpool(int nthread) =>Crea un pool de threads con un número de elemento prejijado. Los threads ofrecen la interfaz ScheduledExecutorService con la que se puede planificar la ejecución periodica de los threads. 16
17 Ejemplo Ejemplo: Sistema inactivo llegan 10 tareas simultáneamente pasan 10 segundos llegan 5 tareas simultáneamente pasan 5 minutos Llegan 20 tareas simultáneamente. Cada tarea toma entre 5 y 15 segundos en procesarse. Procodis 09: IV.1- Executor framework: Thread J.M.Drake L.Barros 17
18 Ejemplo:newFixedThreadPool(int numthreads) Ejemplo: Sistema inactivo llegan 10 tareas simultáneamente pasan 10 segundos llegan 5 tareas simultáneamente pasan 5 minutos Llegan 20 tareas simultáneamente. Cada tarea toma entre 5 y 15 segundos en procesarse. las primeras 10 tareas que llegan se ponen en la cola y los threads desocupados toman cada uno una tarea y la procesan. cuando llegan las siguientes 5 tareas, se ponen en la cola y los primeros threads que se desocupen irán tomando las tareas de la cola para procesarlas. cuando lleguen 20 tareas 5 minutos después, se ponen en la cola y los threads van a tomar las primeras 10 (dado que están todos desocupados). cada thread cuando termine de procesar su tarea, tomará otra tarea de la cola. Procodis 09: IV.1- Executor framework: Thread J.M.Drake L.Barros 18
19 Ejemplo:newCachedThreadPool() Ejemplo: Sistema inactivo llegan 10 tareas simultáneamente pasan 10 segundos llegan 5 tareas simultáneamente pasan 5 minutos Llegan 20 tareas simultáneamente. Cada tarea toma entre 5 y 15 segundos en procesarse. cada una de las 10 tareas que llegan primero, se ejecutan cada una en un thread nuevo. Cuando llegan las siguientes 5 tareas, se buscan primero los threads que ya hayan terminado de procesar su tarea; si hay threads libres, se ponen las tareas a procesarse dentro de dichos threads, y las tareas faltantes se procesan en threads nuevos: Por ejemplo, si ya hay 3 threads libres, se procesan ahi 3 de las tareas nuevas, y se crean 2 threads nuevos para procesar las 2 tareas faltantes En este momento se tienen 12 threads funcionando, que al final habrán procesado 15 tareas. Los threads que llevan mucho tiempo inactivos son terminados automáticamente por el pool, de manera que el número de threads para procesar tareas va bajando cuando el sistema está inactivo e incluso se puede quedar vacío, como al principio. Cuando lleguen nuevas tareas, se crearán los threads necesarios para procesarlas. Es decir, cuando lleguen 20 tareas 5 minutos después, seguramente van a correr en 20 threads nuevos. 19
20 Ejemplo: newsinglethreadexecutor() Ejemplo: Sistema inactivo llegan 10 tareas simultáneamente pasan 10 segundos llegan 5 tareas simultáneamente pasan 5 minutos Llegan 20 tareas simultáneamente. Cada tarea toma entre 5 y 15 segundos en procesarse. crea un pool de un solo thread, con una cola en donde se ponen las tareas a procesar. el thread toma una tarea de la cola, la procesa y toma la siguiente, en un ciclo. llegan 10 tareas, y se van a procesar de manera secuencial, las siguientes 5 se van a encolar y se procesarán cuando se terminen las primeras 10, y las ultimas 20 se procesarán una tras otra. 20
21 Ejemplo:newScheduledExecutor() Ejemplo: Sistema inactivo llegan 10 tareas simultáneamente pasan 10 segundos llegan 5 tareas simultáneamente pasan 5 minutos Llegan 20 tareas simultáneamente. Cada tarea toma entre 5 y 15 segundos en procesarse. crea un pool que va a ejecutar tareas programadas cada cierto tiempo, ya sea una sola vez o de manera repetitiva. Es parecido a un timer, pero con la diferencia de que puede tener varios threads que irán realizando las tareas programadas conforme se desocupen. 21
22 Ciclo de vida de los Executors La interfaz ExecutorService que extiende Executor ofrece diferentes servicios para controlar el ciclo de vida de los threads del pool: Un thread pool sigue un ciclo de vida con tres estados: running: Estado en que se encuentra cuando se crea un thread pool. Admite trabajos y cuando tiene thread disponibles los ejecuta. shutting down: Estado de finalizacíón gradual. No se acepta nuevas tareas, pero aquellas que habían sido ordenadas (aunque no se hayan iniciado su ejecución) se ejecutan. terminated: Finalización abrupta. Trata de finalizar las tareas en ejecución, y ni admite nuevas tareas, ni comienza la ejecución de tareas ordenadas
23 Interfaz ExecutorService public interface ExecutorService extends Executor{ void shutdown(); // Initiates an orderly shutdown in which previously submitted // tasks are executed, but no new tasks will be accepted. List<Runable> shutdownnow(); // Attempts to stop all actively executing tasks, // halts the processing of waiting tasks, and returns a list of the tasks // that were awaiting execution. boolean isshutdown(); // Returns true if this executor has been shut down. boolean is Terminated(); // Returns true if all tasks have completed following shut down. boolean awaittermination(long timeout, TimeUnit unit) throw interruptedexception; // Blocks until all tasks have completed execution after a shutdown request, or the // timeout occurs, or the current thread is interrupted, whichever happens first. //.. Hay otros metodos relativos a encargos de tareas 23 23
24 Ejemplo de finalización de las tareas del pool import java.io.*; import java.util.*; import java.util.concurrent.*; public class Gestor { public static void main(string[] args) { Vector<String> listanombres=new Vector<String>(); listanombres.add( _ ); final ExecutorService exec= Executors.newFixedThreadPool(2); try{sopa.cargasopa(args[0]);catch(ioexception e){; while (listanombres.size()!=0){ try{listanombres=sopa.leenombres();catch (IOException e){ for (int i=0; i<listanombres.size(); i++){ exec.execute(new Tarea(listaNombres.elementAt(i))); exec.shutdownnow(); 24
25 Ejemplo II: Ejemplo de finalización de las tareas del pool public class MyRunnable implements Runnable { private final long countuntil; MyRunnable(long countuntil) { this.countuntil = public void run() { long sum = 0; for (long i = 1; i < countuntil; i++) { sum += i; System.out.println(sum); public class Main { private static final int NTHREADS = 10; public static void main(string[] args) { ExecutorService executor = Executors.newFixedThreadPool(NTHREADS); for (int i = 0; i < 20; i++) { Runnable worker = new MyRunnable(10L + i); executor.execute(worker); // This will make the executor accept no new threads // and finish all existing threads in the queue executor.shutdown(); // Wait until all threads are finish while (!executor.isterminated()) { System.out.println("Finished all threads"); Procodis 09: IV.1- Executor framework: Thread J.M.Drake L.Barros 25
26 Tarea con resultados demorados El framework Executor utiliza la representacion de las tareas mediante instancias que ofrecen la interfaz Runnable. Esta interfaz tiene ciertas limitaciones: No puede retornar valores. No puede lanzar excepciones. Muchas tareas representan segmentos de computación aplazada que deben ser verificados posteriormente cuando terminen. Para estos casos la abstracción Callable es más adecuada. La tarea que las lanza obtiene información en la invocación de forma que, más adelante puede obtener los resultados y el estado de la tarea. Future es una clase cuyas instancias representan el estado de una tarea a lo largo de su ciclo de vida, y a través de ella una tarea puede retornar los resultados, conocer su estado o ser gestionada. 26
27 Interfaces Callable y Future public interface Callable<V>{ V call() throws Exception; public interface Future<V> { boolean cancel(boolean mayinterruptifrunning); boolean iscancelled() boolean isdone(); V get() throws InterruptedException, ExecutionException, CancellationException; V get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, CancellationException, TimeoutException; 27
28 Interface ExecutorService (2) public interface ExecutorService extends Executor{ <T> List <Future<T>> invokeall(collection<callable<t> tasks); // Executes the given tasks, returning a list of Futures holding their status and results when all complete. <T> List <Future<T>> invokeall(collection<callable<t> tasks, long timeout, TimeUnit unit); // Executes the given tasks, returning a list of Futures holding their status and results when all complete or the timeout expires, whichever happens first. <T> T invokeany(collection <Callable<T> tasks) ; // Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do. <T> T invokeany(collection <Callable<T> tasks, long timeout, TimeUnit unit) ; // Executes the given tasks, returning the result of one that has completed successfully (i.e., without throwing an exception), if any do before the given timeout elapses. <T> Future<T> submit(callable<t> task) ; // Submits a value-returning task for execution and returns a Future representing the pending results of the task. Future<?> submit(runnable task) ; // Submits a Runnable task for execution and returns a Future representing that task. <T> Future<T> submit(runnable task, T result) ; // Submits a Runnable task for execution and returns a Future representing that task that will upon completion return the given result. 28
29 Ejemplo de tarea aplazada interface ArchiveSearcher { String search(string target); class App { ExecutorService executor =... ArchiveSearcher searcher =... void showsearch(final String target) throws InterruptedException { Future<String> future = executor.submit( new Callable<String>() { public String call() { return searcher.search(target); ); displayotherthings(); // do other things while searching try { displaytext(future.get()); // use future catch (ExecutionException ex) { cleanup(); return; 29
30 Ejemplo de devolución de parámetros import java.util.*; import java.util.concurrent.*; public class CallableExample { public static class WordLengthCallable implements Callable { private String word; public WordLengthCallable(String word) { this.word = word; public Integer call() { return Integer.valueOf(word.length()); Ejecución: Params: hola hola hola hola The sum of lengths is 16 Procodis 09: IV.1- Executor framework: Thread J.M.Drake L.Barros 30
Arquitecturas cliente/servidor
Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?
(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
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
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
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 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
Construcciones del Lenguaje Java
Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.
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:
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
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 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
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
Programación Concurrente en Java: Threads. Ejemplos de programación concurrente. Luis Fernando Llana Díaz. 24 de abril de 2008
Departamento de Sistemas Informáticos y Computación Universidad Complutense de Madrid de abril de 00 Ejemplos de programación concurrente En un sistema operativo, diversos programas compiten por los recursos
Programació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
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
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...
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
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
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
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
3.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
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
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
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
Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta
Centro Asociado Palma de Mallorca Antonio Rivero Cuesta Excepciones... 5 Excepciones de uso frecuente... 8 Excepciones no comprobadas... 13 Excepciones comprobadas... 14 La clase Runtime Exception...
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:
Programación Orientada a Objetos en C#.NET CAPÍTULO 8 DELEGADOS. Ing. Bruno López Takeyas, M.C.
CAPÍTULO 8 DELEGADOS 2 http://www.itnuevolaredo.edu.mx/takeyas 1 Preguntas detonadoras Qué es un delegado? Para qué sirve? En qué circunstancias se recomienda implementar delegados? Qué es un método anónimo?
Derechos de Acceso: COMPOSICION
CLASES Una clase es un tipo definido por el usuario que describe los atributos y los métodos de los objetos que se crearan a partir de la misma. class nombre_clase cuerpo de la clase Derechos de Acceso:
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
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
Solució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
Prueba N o 1. Programación II
UNIVERSIDAD ANDRÉS BELLO 1 Prueba N o 1 Programación II Profesores: José Luis Allende y Carlos Beyzaga. Fecha: 10 de Septiembre de 2013 Nombre: Nota: Instrucciones: Coloque su nombre a todas las hojas.
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
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
Sockets en Java. Prof. Wílmer Pereira Universidad Simón Bolívar
Sockets en Java Prof. Wílmer Pereira Universidad Simón Bolívar Arquitectura Cliente/Servidor Cliente Request Reply Servidor Cómo permitir comunicación entre objetos situados en diferentes máquinas? Sockets
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
Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia
Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona
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
Cliente/Servidor en Java
Cliente/Servidor en Java Grupo ARCOS Desarrollo de Aplicaciones Distribuidas Ingeniería Informática Universidad Carlos III de Madrid Contenidos 1. Introducción: 1. Paradigma cliente/servidor 2. Entorno
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
Sockets. Los sockets son un mecanismo de comunicación entre procesos que se utiliza en Internet.
Sockets La biblioteca estándar de clases de Java nos proporciona todo lo que necesitamos para utilizar sockets en nuestras aplicaciones en el paquete java.net, por lo que tendremos que añadir la siguiente
Conceptos a tratar. Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos
Fundamentos de la Programación Orientada a Objetos Ampliación sobre clases y objetos Programación Orientada a Objetos Facultad de Informática Dep. Ingeniería del Software e Inteligencia Artificial Universidad
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
dit UPM Tema 3: Concurrencia /threads (python) Análisis y diseño de software José A. Mañas
Análisis y diseño de software dit UPM Tema 3: Concurrencia /threads (python) José A. Mañas 11.2.2017 referencias Concurrent execution https://docs.python.org/3/library/concurrency.html concurrencia 2 índice
Tutorial de C# Delegados y Eventos. Por: Óscar López, M.Sc.
Tutorial de C# Delegados y Eventos Por: Óscar López, M.Sc. [email protected] DELEGADOS Delegados Son unos objetos que implícitamente extienden de System.Delegate y definen un tipo referencia soportado
PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07
PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada
Introducció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
Estructuras de Datos Clase 1 - Introducción
Estructuras de Datos Clase 1 - Introducción Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina Trivia
PROGRAMACION CONCURRENTE Y DISTRIBUIDA. III.3 Concurrencia con Java: Sincronización
PROGRAMACION CONCURRENTE Y DISTRIBUIDA III.3 Concurrencia con Java: Sincronización J.M. Drake L.Barros 1 Recursos de Java para sincronizar threads Todos los objetos tienen un bloqueo asociado, lock o cerrojo,
NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS
1 NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS Árboles Binarios y Árboles Binarios Ordenados 2 Contenido Árboles binarios Iteradores Árboles binarios ordenados 3 Árboles binarios Algunas definiciones para
Tema 5 Corrección y Robustez Excepciones en Java
Tema 5 Corrección y Robustez Excepciones en Java Parte II: Excepciones en Java Programación Orientada a Objetos Curso 2013/2014 Contenido Introducción Excepciones comprobadas Caso de estudio Tratamiento
Java 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.
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
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)
Práctica 5: Servidor web concurrente en Java
Práctica 5: Servidor web concurrente en Java Esta práctica pretende familiarizar al alumno con la programación de servidores que emplean sockets TCP. Para ello partiremos del servidor web básico visto
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
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez
Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.
FUNDAMENTOS DE PROGRAMACIÓN Curso: 2013/14 EXAMEN PARA ALUMNOS PRESENTADOS AL PRIMER PARCIAL PRIMERA PARTE. EJERCICIO 1 Cuestiones (1 punto)
EXAMEN PARA ALUMNOS PRESENTADOS AL PRIMER PARCIAL PRIMERA PARTE EJERCICIO 1 Cuestiones (1 punto) 1 2 3 4 5 6 7 8 9 10 Seleccione la opción correcta en cada caso, teniendo en cuenta que tan sólo puede marcar
Programació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,
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
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
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
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
Generar Temas de Colores y Cambiarlos Dinámicamente en ZK
Generar Temas de Colores y Cambiarlos Dinámicamente en ZK Hola, mi nombre es Manuel Martínez y soy de Colombia. Voy a explicarles desde cómo construir temas de colores para las interfaces graficas de ZK
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
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
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
Lenguaje de programación con JAVA
Pág. N. 1 Lenguaje de programación con JAVA Familia: Editorial: Autor: Tecnología de la información y computación Macro Eric Gustavo Coronel Castillo ISBN: 978-612-304-288-2 N. de páginas: 360 Edición:
Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu)
Devoluciones de llamada en RMI (Callbacks) Sistemas Distribuidos (Capítulo 8 de Distributed Computing de M. L. Liu) Devolución de llamadas, introducción Cliente-servidor clásico servidorpasivo Tipo pull.
Programació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
Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros
Tema 2 Tipos abstractos de datos. 2.2 Pila de números enteros Especificación de TAD s. TAD Pila de Enteros. desapilar 2 7 3 5 apilar Cima de la Pila Cima de la Pila Definición: Estructura de Datos que
Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño
Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos
2) Cual modificador limita el acceso a un método de una clase pública a los miembros de la misma clase?
PRTIIPNT: MPRS: H: xamen de iagnóstico Programador Java Instrucciones: Lea cada pregunta cuidadosamente y marque la(s) respuesta(s) que sean correctas. 1) ada la siguiente clase: 1. class rrayopy3{ 2.
! Qué es la POO?! Un paradigma de programación. ! No hay paradigmas mejores ni peores! Todos tienen sus ventajas e inconvenientes
Introducción Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Qué es la POO?! Un paradigma de programación! Un paradigma es una forma de afrontar
Aplicaciones Concurrentes
PROGRAMACIÓN CONCURRENTE TEMA 6 Aplicaciones Concurrentes ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA DEPARTAMENTO DE CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Aplicaciones Concurrentes
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.
Java RMI. Sistemas Distribuidos Rodrigo Santamaría
+ Java RMI Sistemas Distribuidos Rodrigo Santamaría RMI Java RMI 2 + RMI 3 Remote Method Invocation: middleware para que un objeto que se ejecuta en una JVM use métodos de otro objeto que se ejecuta en
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
Diseño Basado en Componentes. Curso 2008 / 09
Beneficios de OOP Diseño Basado en Componentes Ingeniería Informática Universidad Carlos III de Madrid Programación Orientada a Objetos (OOP) en VB.NET Diseño Basado en Componentes. Curso Conceptos orientados
Lección 2: Creando una Aplicación en Java. 1. Estructura del archivo de una clase. 3. Definiendo clases fundamentos
Lección 2: Creando una Aplicación en Java 1. Estructura del archivo de una clase 2. Usando una clase 3. Definiendo clases fundamentos Objetivos Conocer: La forma en la cual está se está estructurado el
Técnicas Avanzadas de Testing Automatizado
Técnicas Avanzadas de Testing Automatizado Introducción: Testing ad hoc Testing sistemático Testing unitario Unidad y Suite de tests Frameworks xunit Fixtures compartidos e independecia Tests parametrizados
INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C)
APRENDERAPROGRAMAR.COM INTERFACE COMPARATOR. DIFERENCIAS ENTRE COMPARATOR Y COMPARABLE. CLASE COLLECTIONS. EJERCICIOS RESUELTOS. (CU00918C) Sección: Cursos Categoría: Lenguaje de programación Java nivel
- 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
Las clases Java Socket y ServerSocket
Las clases Java Socket y ServerSocket Lenguajes y Herramientas de Programación Universidad de La Laguna Programa de Doctorado de Física e Informática Escuela Técnica Superior Superior de Ingeniería Informática
Tutorial 1: Desarrollo de un plugin
Tutorial 1: Desarrollo de un plugin En este tutorial introductorio se creará un plugin siguiendo una de las plantillas que ofrece Eclipse. Concretamente se extenderá una vista para mostrar cierta información
Programación Orientada a Objetos (POO)
Programación Orientada a Objetos (POO) Introducción La programación orientada a objetos es una técnica de programación en la cual expresamos el código en términos relacionados a como vemos las cosas en
Definición. Mónica E. García García Feb 07
Tema 11: Herencia 0 Definición Cuando inicialmente se modelan dos cosas y se tienen datos duplicados y además pudiera darse que el número de métodos también es similar así como la implementación, se requiere
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.
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
Componentes Distribuidos EJBs. Ing. Cesar Julio Bustacara Medina
Componentes Distribuidos EJBs Ing. Cesar Julio Bustacara Medina Introducción La Clase del Bean Contiene la lógica del Enterprise Bean. Es una clase Java pública, que implementa los métodos de negocios
PROGRAMACION DISTRIBUIDA
PROGRAMACION DISTRIBUIDA Distribución basada en el patrón proxy-servant Héctor Pérez 2 Distribución de aplicaciones basadas en objetos Objetivo: rediseño de una aplicación orientada a objetos para ser
Primer 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
UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA
UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: TUTORIAL DE SOCKETS EN JAVA Índice 1. Presentación...3 2. Conceptos básicos...4 2.1. TCP...4 2.2.
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
EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas
Apellidos Nombre Firma NIA Grupo EXAMEN PROGRAMACIÓN 21 de Septiembre de 2007 INGENIERÍA INFORMÁTICA Primera parte: Cuestiones 1,5 horas Pregunta 1 (0,5 puntos).- Indicar si las siguientes afirmaciones
