Hebras y Sincronización en Java

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Hebras y Sincronización en Java"

Transcripción

1 Hebras y Sincronización en Java Jonathan Makuc Noviembre 2008 Tópicos: 1. Introducción a hebras en Java Hebras a través del clase Thread Hebras a través de la interfaz Runnable Trabajo con hebras y buenas prácticas Elementos de Sincronización...11

2 1. Introducción a hebras en Java El presente tutorial tiene por objetivo explicar de forma simple y práctica el trabajo básico con hebras en Java, en cuanto a su creación, correcto uso y sincronización. Para un estudio más acabado, refiérase al Tutorial de concurrencia en Java de Sun en Computacionalmente se define como hebra como una unidad de procesamiento de datos, la cual es más liviana que un proceso, entendiendo como proceso a un programa en ejecución. Un proceso puede tener bajo su comando a múltiples hebras que realicen trabajos específicos, a veces de forma paralela. Java proporciona 2 formas para trabajar con hebras: extender un Thread o implementar un Runnable. Ambas resultan en la creación de una hebra de usuario, la cual es invisible al sistema operativo, como se muestra en el diagrama a la derecha, por lo tanto no se puede establecer prioridades de ejecución de hebras Java en el scheduler del sistema operativo. Hebra JVM Hebra Las hebras pueden tener un nombre de identificación, prioridad de ejecución Sistema Operativo (a mayor prioridad, más probabilidad de ejecutarse) y la posibilidad de indicar si son hebras demonio. La JVM posee en su interior un scheduler que se encarga de calendarizar la ejecución de las hebras, manejo de prioridades, creación y destrucción, etc. Al partir la JVM (Java Virtual Machine), se crea una hebra inicial la cual ejecuta al método main. La ejecución continúa hasta que se invoque al método exit de la clase Runtime, o que todas las hebras que no son demonios han terminado. Página 2 de 14

3 2. Hebras a través del clase Thread La clase Thread es la forma real en la cual se crea una nueva hebra en Java. Sus constructores permite establecer nombre, grupo, Runnable a ejecutar y en algunas plataformas tamaño del snack. Esta clase forma parte del lenguaje base de java y se encuentra en el paquete java.lang. La forma tradicional de trabajar con la clase Thread, es extenderla. Para hacer esto, se debe implementar el método run, el cual contendrá el código real a ejecutarse en la nueva hebra. A la derecha vemos el código fuente de una hebra simple de ejemplo la cual recibe como único parámetro de su constructor el nombre que tendrá esta hebra. El constructor es utilizado para inicializar correctamente la hebra pero no inicia su ejecución. Para iniciar la ejecución de la hebra se debe invocar al método start(). En el ejemplo se muestra como se declara la clase MiHebra y luego en el método main se instancia el objeto y luego se corre el código que esta contiene. De esta forma se pueden lanzar múltiples hebras del tipo MiHebra que se ejecuten en paralelo, donde cada una de ellas ejecutará el código contenido en el método run(). class MiHebra extends Thread { public MiHebra(String nombre) { this.setname(nombre); // CODIGO DE LA HEBRA AQUI public static void main(string[] args) { MiHebra hebra1 = new MiHebra( 1 ); Hebra1.start(); Página 3 de 14

4 3. Hebras a través de la interfaz Runnable Una forma alternativa de poder construir el código a ejecutarse dentro de una nueva hebra, es a través de la interfaz Runnable. Esta segunda opción es útil cuando se tienen clases que ya están heredando y además se requiere que ejecuten en paralelo. Todo objeto que implemente la interfaz Runnable debe implementar el método run(), que al igual como sucede con la clase Thread, contiene el código real a ejecutar en la hebra. class MiRunnable implements Runnable { // CODIGO DE LA HEBRA AQUI public static void main(string[] args) { MiHebra hebra1 = new MiHebra(new MiRunnable(), trabajador 1 ); Hebra1.start(); MiHebra hebra2 = new MiHebra(new MiRunnable(), trabajador 2 ); Hebra1.start(); En este ejemplo tenemos la clase MiRunnable que implementa correctamente a Runnable. Para poder ejecutar el código dentro del método run, se debe instanciar el Runnable y pasarlo como parámetro al constructor de un Thread. Desde aquí el manejo de la hebra es idéntico al descrito anteriormente. Página 4 de 14

5 4. Trabajo con hebras y buenas prácticas 4.1. Hebras Demonio Se denomina demonio a un proceso que corre en segundo plano, encargado de prestar un servicio. Java entrega la posibilidad de indicar que un Thread es demonio. No existe ninguna diferencia física entre una hebra demonio y una normal, pero si como estas influyen en el comportamiento del programa principal, puesto que JVM termina cuando todas las hebras nodemonio han finalizado, es decir, si existe al menos 1 hebra no-demonio funcionando, el programa seguirá ejecutándose, aunque este programa no realice ninguna acción. Los demonios son útiles para encapsular código de servicio a otros procesos (como limpieza, programación de tareas, etc.), los cuales no tienen utilidad luego de que el último proceso de primer plano ha terminado. Así, simplificamos la programación de nuestra aplicación dado que no hay que preocuparse por detener las hebras secundarias o de apoyo, puesto que la JVM lo hará por nosotros. class MiDemonio extends Thread { public MiDemonio(String nombre) { this.setname(nombre); this.setdaemon(true); // CODIGO DEL DEMONIO AQUI Página 5 de 14

6 4.2. Iniciar y detener Ya hemos visto como iniciar una hebra, invocando al método start(), pero detenerla no es tan simple. Si bien la clase Thread provee el método stop(), este se encuentra deprecado hace muchas versiones del lenguaje y no se recomiendo utilizarlo bajo ningún punto de vista. El motivo es que invocar a stop() provoca la liberación de todos los monitores que sostiene la hebra, a medida que la excepción ThreadDeath se propaga por el stack. Esta liberación anticipada puede poner en funcionamiento a hebras que se encuentran en estados inconsistentes o que están por ingresar a regiones críticas que no han concluido su ejecución; resultando esto un comportamiento impredecible en la computación final. Para más información, puede referirse al artículo de Sun Java Thread Primitive Deprecation en La forma correcta de programar una hebra, es a través de una variable booleana que indique si continuar la ejecución o no, en conjunto con la reescritura del método stop seteando esta variable en falso. class MiDemonio extends Thread { private corriendo = true; public MiDemonio(String nombre) { this.setname(nombre); this.setdaemon(true); while(corriendo) { // CODIGO DEL DEMONIO AQUÍ public synchronized void stop() { this.corriendo = false; De esta manera es posible planear el funcionamiento del programa correctamente, evitando problemas producto de la terminación a medias de una hebra. Estos errores suelen ser los más difícil de encontrar en una aplicación y por tanto deben tomarse todas las medidas preventivas posibles. Página 6 de 14

7 4.3. Yield y currentthread La clase Thread provee 2 métodos interesantes que cabe mencionar. Por una parte se tiene el método estático currentthread(), el cual retorna un puntero a la hebra que esta actualmente ejecutándose en este proceso java. class MiDemonio extends Thread { Thread yo = Thread.currentThread(); El método yield() por su parte, cede el tiempo de CPU que tiene esta hebra, a la siguiente. Útil para procesos demonios y otros códigos donde se realiza una acción condicionada a una verificación, de lo contrario no hace nada. class MiDemonio extends Thread { private corriendo = true; while(corriendo) { if(condicionok) // codigo a ejecutar else yield(); Página 7 de 14

8 4.4. Dormir y esperar Java también provee mecanismos para poder bloquear la ejecución de una hebra por tiempo determinado o poder esperar al término de otra para poder continuar. El método sleep() de Thread permite dormir a la hebra por la cantidad de milisegundos indicados en el parámetro. El método sleep puede ser interrumpido, lanzándose una InterruptedException por lo que debe ir en un bloque try-catch. Más información sobre interrupciones en el siguiente punto. class MiDemonio extends Thread { private corriendo = true; while(corriendo) { // codigo a ejecutar try { sleep(1 * 1000); catch(interruptedexception e) { Por otra parte join() permite que una hebra espere a que otra termine su ejecución. A través de este comando, la hebra que lo invoca queda bloqueada hasta que la termine el método run de la hebra en cuestión. Al igual que el método sleep(), también debe colocarse dentro de un bloque trycatch dado que la hebra a la cual se espera podría terminar de forma interrumpida. public static void main(string[] args) { Hebra hebra1 = new Hebra(); hebra1.start(); try { hebra1.join(); System.out.println( hebra1 ha terminada OK ); catch(interruptedexception e) { Página 8 de 14

9 También existe un método sleep(long milis) y sleep(long milis, int nanos) que permite limitar la cantidad de tiempo de espera. Todas las variaciones solo pueden ser ejecutadas por la hebra para si y no para otras hebras Interrupción Una interrupción es una señal a una hebra para que esta deje de hacer lo que este haciendo y realice alguna otra acción, análogo a las interrupciones de sistema operativo. Para interrumpir a una hebra, se invoca al método interrupt(). Existen 2 manera de que una hebra haga uso de las interrupciones: manejar adecuadamente las InterruptedExceptions y consultar el método interrupted(). Para el primer caso, interrumpimos el bloqueo de una hebra ya sea por invocación a sleep o join. Aquí una hebra externa puede reanudar la ejecución de la hebra detenida forzosamente, produciéndose el lanzamiento de la InterruptedException. HEBRA SLEEP INTERRUMPIDO class Hebra extends Thread { Date inicio = new Date(); try { sleep(10 * 1000); System.out.println( Dormido 10 segundos ) catch(interruptedexception e) { long diff = (new Date()).getTime() inicio.gettime(); System.out.println( Dormido: + diff + milisegundos. ); HEBRA INTERRUPTORA SLEEP public static void main(string[] args) { Hebra h1 = new Hebra(); h1.start(); try { Thread.sleep(1000) catch(interruptedexception e) { h1.interrupt(); Página 9 de 14

10 Nótese como en la hebra main invocamos al método estático sleep, el cual aplica sobre la hebra actual, que claramente es aquella que esta ejecutando el comando. El funcionamiento con join() es análogo. La hebra que esta esperando a que otra termine, ve su bloqueo interrumpido externamente, debiendo manejar correctamente la excepción. Ahora, para el caso de hebras que no tienen sleep o join en un su código, sino que solo ejecución continua de código, es el programador el encargado de verificar periódicamente si se han recibido interrupciones invocando al método interrupted(). class MiDemonio extends Thread { private corriendo = true; while(corriendo) { if(interrupted()) { // manejo de la interrupción // possible termino de la ejecución break; else { // codigo ejecución normal Página 10 de 14

11 5. Elementos de Sincronización 5.1. Generalidades Desde el momento en que se utiliza programación multiproceso o multihebra (concurrente), afloran una serie de problemas sobre el trabajo de los datos por parte de las múltiples hebras. Algo tan simple como i++ puede ser complicado. Esta operación que al parecer es unitaria, son de verdad 3: Consulta del valor de i Aumento del valor en 1 Asignación del nuevo valor a la variable i Imaginemos que existen 2 procesos que trabajan con la misma variable i. Si ambos ejecutan al mismo tiempo las instrucciones, ambos podrían obtener el valor inicial de i (ej: i = 0), sumar 1 al valor (resultado = 1) y asignar ese valor a i, resultando en un resultado final erróneo dado que seria solo 1 unidad más, en caso que debería ser 2. Para solucionar este y otros problemas, existen múltiples soluciones implementadas por hardware y software. Una de las soluciones clásicas son los semáforos. Java incluye además monitores para otorgar otra herramienta de sincronización. Sobre estos elementos, Java incorpora como parte de su distribución J2SE el paquete java.util.concurrent que contiene un conjunto de clases e interfaces listas para su uso en el manejo de la concurrencia. Proceso 1 Programa Proceso 2 class Hebra extends Thread { public static int i = 0; i = 0 i = 1 System.out.println( i = + i); i++; System.out.println( i = + i); i = 0 i = 1 Ejemplo de ejecución errónea cuando se tienen múltiples hebras ejecutando un mismo código Página 11 de 14

12 5.2. Monitores Los monitores son por definición un método de proporcionar exclusión mutua que esta implementado en el lenguaje de programación. Java implementa monitores como parte de su lenguaje base, entregando una herramienta embebida en cada objeto Java, dado que se encuentran en Object. El uso de monitores en Java es muy simple; basta colocar la palabra clave synchronized antecediendo el nombre del método a sincronizar. Esto protegerá que solo 1 hebra a la vez pueda acceder a los todos métodos que se declaren sincronizados dentro de la misma clase. Estos locks a los métodos son reentrantes, es decir, que cuando una hebra ha adquirido el monitor en un método, puede reentrar al mismo método u otro sincronizado sin necesidad de liberarlo. public class Hebra extends Thread { Hebra.metodo(); public static synchronized void metodo() { System.out.println("Hebra ingresada " + Thread.currentThread().getName()); try { Thread.sleep(3000); catch(exception e) { public static synchronized void metodo2() { System.out.println("Ingresada " + Thread.currentThread().getName()); try { Thread.sleep(3000); catch(exception e) { public static void main(string[] main) { Hebra h = new Hebra(); h.start(); Hebra.metodo2(); Por defecto Java sigue ejecutando la hebra que inicie a otra hasta que ocurra el timeslice de la JVM. Así, primero se imprimirá en pantalla Ingreada main y 3 segundos después Hebra ingresada Thread-0. El monitor fue adquirido primero por la hebra main y una vez que sale del método lo libera permitiendo que la hebra Thread-0 pueda adquirirlo. Página 12 de 14

13 Si bien lo monitores Java entregan una solución para la mayoría de los casos, su capacidad de ser adquiridos por una hebra a la vez es una limitante no menor. Supongamos el caso de un objeto centralizador de recursos con múltiples métodos estáticos para acceder a tales recursos. En este caso cuando 1 hebra adquiere el monitor para utilizar 1 recurso, bloquea el acceso a todo el resto de los recursos aun cuando sean independientes. Para solucionar correctamente este problema, se pueden utilizar semáforos Semáforos Los semáforos son una de las soluciones clásicas al problema de concurrencia. Concebidos en 1965 por Dijkstra, son implementados en java a través del objeto java.util.concurrent.semaphore. Formalmente un semáforo es un elemento que lleva en su interior un contador que indica la cantidad inicial de autorizaciones de paso o banderitas. Un proceso al querer entrar a una región crítica 1 adquiere una banderita del semáforo (formalmente en la literatura métodos llamados p() o down() ) y cuando la deja lo libera (formalmente v() o up() ). Si existen banderitas disponibles, entonces el proceso continua su ejecución, de lo contrario queda bloqueado a la espera que otro proceso libere alguna banderita y se pueda continuar. Un ejemplo de utilización de semáforos, puede ser la protección de una variable, de manera que no se produzca el error mencionado en el punto anterior. Un simple semáforo binario (2 estados: con y sin banderita), permite asegurar que solo un proceso a la vez modifique el valor de la variable i. Para esto inicializamos una variable estática (para que sea única entre todas las instancias de la clase) con el semáforo en 1. class MiHebra extends Thread { private static Semaphore mutex = new Semaphore(1); private static int i = 0; while(running) { try { mutex.acquire(); i++; mutex.release(); catch(interruptedexception e) { 1 Región Crítica es aquella porción del código de un programa que al ser ejecutado por más procesos que los intencionados originalmente por el programador, produce un resultado indeterminado en la computación. Página 13 de 14

14 Aquí hemos colocado el match a la InterruptedException, dado que durante la espera de adquisición de semáforo, la hebra podría ser interrumpida externamente. Para evitar este comportamiento se tienen 2 alternativas. La primera es usar el método acquireuninterrumptibly el cual no interrumpe el bloqueo de espera por el semáforo; la segunda es trabajar con el método tryacquire el cual no bloquea la ejecución, retornando true cuando se pudo adquirir el semáforo y false cuando no java.util.concurrent Adicionalmente a los semáforos, Java provee una serie de objetos para el control de la concurrencia listos para su uso. A continuación una breve lista de objetos thread-safe : y su utilidad. Paquete java.util.concurrent ConcurrentHashMap ConcurrentLinkedQueue CyclicBarrier Semaphore Paquete java.util.concurrent.atomic AtomicBoolean AtomicInteger AtomicIntegerArray AtomicLong AtomicReference Paquete java.util.concurrent.lock ReentrantLock Hashmap con operaciones atómicas Lista enlazada con operaciones atómicas. Barreras en Java Semáforos en Java Booleano con operaciones atómicas, incluido testandset. Entero con operaciones atómicas, incluido testandset. Arreglo de enteros con operaciones atómicas, incluido testandset. Real con operaciones atómicas, incluido testandset. Referencia a un objeto (cualquiera) con operaciones atómicas. Lock reentrante, aquel que permite que una misma hebra lo adquiera múltiples veces luego de adquirirlo la primera vez, bloqueando a otras hebras. EOF Jonathan Makuc Página 14 de 14

Benemérita Universidad Autónoma del Estado de Puebla

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

Más detalles

Java y JVM: programación concurrente

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

Más detalles

1 HILOS (THREADS) EN JAVA

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

Más detalles

Benemérita Universidad Autónoma del Estado de Puebla

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

Más detalles

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos.

Threads. La plataforma JAVA soporta programas multhreading a través del lenguaje, de librerías y del sistema de ejecución. Dos. Threads Un thread es un flujo de control secuencial dentro de un programa. A los threads también se los conoce como procesos livianos ó contextos de ejecución. Un thread es similar a un programa secuencial:

Más detalles

Multitarea en Java. Rafa Caballero - UCM

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

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. 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 detalles

Federico Peinado www.federicopeinado.es

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

Más detalles

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

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

Más detalles

Concurrencia en Java

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()

Más detalles

Modelo de Objetos Distribuidos

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

Más detalles

Modulo 1 El lenguaje Java

Modulo 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 detalles

Java: Programación Multithread

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

Más detalles

Introducción a la programación orientada a objetos

Introducció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 detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN 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 detalles

Concurrencia en Android LSUB, GYSC, URJC

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

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A 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 detalles

Programación Orientada a Eventos

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

Más detalles

Pruebas de unidad con JUnit

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

Más detalles

Programación Concurrente en Java

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

Más detalles

Curso de Python Inicial

Curso de Python Inicial Logo IAA-CSIC Curso organizado por el Gabinete de Formación del CSIC Curso de Python Inicial Clases Contenidos 1. Paradigmas de la Programación 2. Programación Orientada a objetos 3. Clases 4. Objetos

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

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

Más detalles

8. Sentencia return y métodos

8. 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 detalles

Introducción a la Programación Orientada a Objetos

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

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código

Tema 6. Reutilización de código. Programación 2015-2016. Programación - Tema 6: Reutilización de código Tema 6 Reutilización de código Programación 2015-2016 Programación - Tema 6: Reutilización de código 1 Tema 6. Reutilización de código Modularidad. Implementación de métodos. Uso de métodos. Programación

Más detalles

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp...

Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... Contenido Introducción... 1 Qué es Java?... 1 Compilando a Bytecode... 1 Usando jgrasp Para Hacer el Trabajo Sucio... 5 El Entorno de jgrasp... 5 Introducción Es tiempo de hablar en detalle de lo que significa

Más detalles

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

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

Más detalles

Introducción - por qué usarlas?(1)

Introducción - por qué usarlas?(1) Excepciones en Java Introducción - por qué usarlas?(1) En el mundo de la programación hay algo que siempre ocurre: los errores en los programas. Pero qué sucede realmente después de que ha ocurrido el

Más detalles

1. Manejo de memoria estática 2. Manejo de memoria dinámica

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

Más detalles

PROGRAMACIÓN EN JAVA

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

Más detalles

Clases y Objetos. Informática II Ingeniería Electrónica

Clases y Objetos. Informática II Ingeniería Electrónica Clases y Objetos Informática II Ingeniería Electrónica Los Tipos de Datos Hasta ahora, en un programa podemos usar para representar variables a: Tipos fundamentales : enteros (int), caracteres (char),

Más detalles

TEMA 5: Control de la Concurrencia en Java (API Estándar)

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

Más detalles

Java Inicial (20 horas)

Java 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 detalles

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

EXCEPCIONES 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 detalles

Sistemas Operativos. Curso 2016 Procesos

Sistemas Operativos. Curso 2016 Procesos Sistemas Operativos Curso 2016 Procesos Agenda Proceso. Definición de proceso. Contador de programa. Memoria de los procesos. Estados de los procesos. Transiciones entre los estados. Bloque descriptor

Más detalles

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 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 detalles

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA ARREGLOS EN JAVA I I N T R O D U C C I Ó N En las sesiones anteriores, los datos manejados en los programas han sido datos simples (carácter, entero, reales) En un gran número de problemas es necesario

Más detalles

4. Programación Paralela

4. 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 detalles

Base de datos en Excel

Base de datos en Excel Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de

Más detalles

Curso de Java POO: Programación orientada a objetos

Curso 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 detalles

Programación Orientada a Objetos. Java: Excepciones

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

Más detalles

Java en 2 horas. Rodrigo Santamaría

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

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

Guía Notas Parciales. Intermedio

Guía Notas Parciales. Intermedio Guía Notas Parciales Intermedio ÍNDICE I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULAS) 6 IV. INGRESAR

Más detalles

Tema 1. Introducción a JAVA

Tema 1. Introducción a JAVA Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems

Más detalles

Módulo 2. Inicio con Java

Módulo 2. Inicio con Java Módulo 2. Inicio con Java Objetivos: -Clasificar el lenguaje de programación Java según las formas de clasificar los lenguajes de programación. -Describir el funcionamiento de la plataforma Java. -Explicar

Más detalles

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J.

Sensor de Temperatura utilizando el Starter Kit Javelin Stamp. Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp Realizado por: Bertha Palomeque A. Rodrigo Barzola J. INTRODUCCION DIFERENCIAS EJEMPLOS JAVA Orientado a Objetos Multiplataforma Programar

Más detalles

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

SOLUCION 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 detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

Programación Orientada a Objetos. Java: Excepciones

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

Más detalles

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1. Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;

Más detalles

Módulo 1 El lenguaje Java

Módulo 1 El lenguaje Java Módulo 1 El lenguaje 1.1 Presentación de es un lenguaje de programación desarrollado por la empresa Sun Microsystems en 1991 como parte de un proyecto secreto de investigación llamado Green Proyect, con

Más detalles

Object 1. Threads en Java

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

Más detalles

Receta general para resolver problemas de sincronización con semáforos

Receta 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 detalles

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Sintaxis y Convenciones de Java. M. en C. Erika Vilches Sintaxis y Convenciones de Java M. en C. Erika Vilches Estructura del Código en Java Hay una clase en un archivo fuente Hay métodos en una clase Hay enunciados en un método Anatomía de una Clase Cuando

Más detalles

Tema 4. Gestión de entrada/salida

Tema 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 detalles

2.2.- Paradigmas de la POO

2.2.- Paradigmas de la POO 2.2.- Paradigmas de la POO Los principios propios de la orientación a objetos son: 2.2.1.- Abstracción de Datos 2.2.2.- Encapsulamiento 2.2.3.- Ocultamiento 2.2.4.- Herencia 2.2.5.- Polimorfismo Cualquier

Más detalles

Programación Orientada a Objetos con Java

Programación Orientada a Objetos con Java Programación Orientada a Objetos con Java M.C. Jorge Eduardo Ibarra Esquer [email protected] 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 detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

SERVIDOR 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 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 detalles

Programación orientada a objetos

Programación orientada a objetos Repaso Programación orientada a objetos Curso INEM. Programación en Java Santiago Muelas Pascual [email protected]! Clase! Objeto! Atributo o variable de instancia! Método! Instanciar/crear un objeto!

Más detalles

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa [email protected]

CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa vjsosa@tamps.cinvestav.mx CREAR UN SERVICIO WEB BASICO CON JAVA AXIS2. Víctor J. Sosa [email protected] En este documento explicaré brevemente cómo construir un servicio web con Java Axis2 y cómo invocarlo desde un cliente

Más detalles

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación. IIC1102 Introducción a la Programación Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación IIC1102 Introducción a la Programación Tutorial eclipse TM Introducción al uso de eclipse TM Contents

Más detalles

Estructuras de Sistemas Operativos

Estructuras 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 detalles

CDI Exclusión mutua a nivel alto. conceptos

CDI 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 detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse. TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.

Más detalles

Uso de excepciones en Java

Uso 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 detalles

Programación Orientada a Objetos en Java

Programació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 detalles

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos.

Actividades para mejoras. Actividades donde se evalúa constantemente todo el proceso del proyecto para evitar errores y eficientar los procesos. Apéndice C. Glosario A Actividades de coordinación entre grupos. Son dinámicas y canales de comunicación cuyo objetivo es facilitar el trabajo entre los distintos equipos del proyecto. Actividades integradas

Más detalles

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL OBJETIVO Mejorar el nivel de comprensión y el manejo de las destrezas del estudiante para utilizar formulas en Microsoft Excel 2010. 1) DEFINICIÓN Una fórmula de Excel es un código especial que introducimos

Más detalles

un programa concurrente

un 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 detalles

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA

COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador

Más detalles

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos Conceptos ELO329: Diseño y Programación Orientados a Objetos 1 Paradigmas de Programación Historia: Los computadores parten cableados por hardware, Luego se introduce la programación en binario, Se desarrolla

Más detalles

2.1. Introducción al lenguaje Java

2.1. Introducción al lenguaje Java Bloque II. Elementos del lenguaje de programación Java 1.Introducción a los lenguajes de programación 2. Estructura de un programa 3. Datos y expresiones simples 4. Instrucciones de control 5. Entrada/salida

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C. EJERCICIO GUIADO. JAVA: VARIABLES GLOBALES Variables Globales / Propiedades de la Clase Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el

Más detalles

LiLa Portal Guía para profesores

LiLa Portal Guía para profesores Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista

Más detalles

Técnicas Avanzadas de Testing Automatizado

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

Más detalles

Hilos en Java. Crear un Hilo. Detener un hilo. Fuente: http://www.chuidiang.com/java/hilos/hilos_java.php

Hilos 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 detalles

Si bien Pascal-FC no trae algunas de las características de Pascal como:

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

Más detalles

Capítulo 1 Introducción a la Computación

Capí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 detalles

Manual Ingreso Notas y Acta Electrónica

Manual Ingreso Notas y Acta Electrónica Manual Ingreso Notas y Acta Electrónica ÍNDICE ÍNDICE 2 I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) _ 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULADAS)

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

Secretos de la Programación Concurrente

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]

Más detalles

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos: UNIDAD 8 Presentaciones Reunión. (ITE. Banco de imágenes) as presentaciones son documentos formados por una sucesión de páginas, llamadas diapositivas, que transmiten información estructurada de manera

Más detalles

Ecuaciones de primer grado con dos incógnitas

Ecuaciones de primer grado con dos incógnitas Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad

Más detalles

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS

Más detalles

FUNDAMENTOS DE PROGRAMACION CON C#

FUNDAMENTOS DE PROGRAMACION CON C# Capítulo 1 FUNDAMENTOS DE PROGRAMACION CON C# El lenguaje C# C# (léase, en inglés C sharp, y en español C almohadilla) es un lenguaje de programación que permite el desarrollo de aplicaciones para Internet,

Más detalles

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO En base a las variables mencionadas anteriormente se describirán las relaciones que existen entre cada una de ellas, y como se afectan. Dichas variables

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

Java en 3 horas. Ampliación de Sistemas Operativos. Rodrigo Santamaría

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

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net

Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net 2012 Funcionalidades Software PROYECTOS GotelGest.Net Software para la gestión de Proyectos GotelGest.Net Servinet Sistemas y Comunicación S.L. www.softwaregestionproyectos.com Última Revisión: Febrero

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Transacciones y bloqueos en SQL-Server

Transacciones 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 detalles

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ ELECTRÓNICA DIGITAL DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ IES TRINIDAD ARROYO DPTO. DE ELECTRÓNICA ÍNDICE ÍNDICE... 1 1. LIMITACIONES DE LOS CONTADORES ASÍNCRONOS... 2 2. CONTADORES SÍNCRONOS...

Más detalles