SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
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 Alejandro Bravo Arredondo
Matricula:
200824268
20 de septiembre de 2011
Introducción
En esta práctica vamos a hacer uso de los Semáforos para realizar la exclusión
mutua en la región critica, para esto hay que dar una breve introducción de lo que
es un semáforo;
Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el
método clásico para restringir o permitir el acceso a recursos compartidos (por
ejemplo, un recurso de almacenamiento del sistema o variables del código fuente)
en un entorno de multiprocesamiento (en el que se ejecutarán varios procesos
concurrentemente).
Java desde la versión 1.5 contiene la clase java.util.concurrent.Semaphore para
el uso de Semáforos, o podemos crear nuestra propia clase Semáforos con los
métodos WAIT() y SIGNAL() los cuales bloquean y liberan a un proceso
respectivamente…
Objetivo
Hacer uso y entender el comportamiento de los Semáforos como herramienta para
la programación concurrente de hilos en Java, también en esta práctica debemos
notar la diferencia entre dos programas que realizan lo mismo, pero uno usando
métodos de sincronización con primitivas de Java y el otro con semáforos.
Código
1. Explica la diferencia entre los dos códigos de semáforos
R= La diferencia es que un código utiliza las primitivas de Java para lograr la
sincronización de los hilos, para ser exactos, utiliza el método sleep(), y el otro
código hace uso de la clase java.util.concurrent.Semaphore para implementar
los Semáforos de Java y con éstos logras la exclusión mutua de los hilos.
2. Explica los métodos de Java utilizados en el Código de Con semáforos.
R= Cada semáforo tiene estos 2 métodos: acquire () bloquea si es necesario un
hilo hasta que un permiso esté disponible. Y release () añade un permiso, el cual
puede desbloquear un acquire ().
3. ¿Por qué se utilizan variables protegidas y estáticas?
R= Porque las variables protegidas, que son los Semáforos, se usan así para que
otras subclases de otros paquetes no puedan acceder, modificar su valor y causar
un comportamiento inesperado, las estáticas se usan porque son variables “de
clase” y así se podrán usar en el Main de Programa.
4. Especifica que recurso se comparte entre los semáforos
R= Se comparte el valor del semáforo, si el contador de éste es 0 puede acceder
a la región critica, de lo contrario tendrá que esperar un release().
5. ¿Qué se utilizó para la sincronización y cómo se implementó?
R= Para la sincronización con primitivas de Java se utilizó solo el método sleep(),
sin ninguna condición, solo el hilo dormía un tiempo aleatorio, luego imprimía el
texto asignado y finalmente terminaba, esto es lo mismo para los 4 hilos que se
crean.
6. Se presenta la exclusión mutua en este ejercicio, ¿explica de qué manera?
R= Si se presenta, ya que los hilos no pueden acceder al mismo recurso
compartido al mismo tiempo, para esto se utilizó la sincronización por primitivas de
Java y los Semáforos para realizar la exclusión mutua y que uno, y solo un hilo
accediera a la región critica por vez.
Sin Semáforos:
public class p1 extends Thread
{
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P1");
}
}
public class p2 extends Thread
{
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P2");
}
}
public class p3 extends Thread
{
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P3");
}
}
public class p4 extends Thread
{
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P4");
}
}
public class SinSemaforos
{
public static void main(String[] args)
{
(new Thread(new p1())).start();
(new Thread(new p2())).start();
(new Thread(new p3())).start();
(new Thread(new p4())).start();
}
}
Con Semáforos:
import java.util.concurrent.Semaphore;
public class p1 extends Thread
{
protected Semaphore oFinP1;
public p1(Semaphore oFinP1)
{
this.oFinP1 = oFinP1;
}
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P1");
this.oFinP1.release(2);
}
}
import java.util.concurrent.Semaphore;
public class p2 extends Thread
{
protected Semaphore oFinP1;
protected Semaphore oFinP3;
public p2(Semaphore oFinP1,Semaphore oFinP3)
{
this.oFinP3 = oFinP3;
this.oFinP1 = oFinP1;
}
public void run()
{
try
{
this.oFinP1.acquire();
this.oFinP3.acquire();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P2");
}
}
import java.util.concurrent.Semaphore;
public class p3 extends Thread
{
protected Semaphore oFinP3;
public p3(Semaphore oFinP3)
{
this.oFinP3 = oFinP3;
}
public void run()
{
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P3");
this.oFinP3.release(2);
}
}
import java.util.concurrent.Semaphore;
public class p4 extends Thread
{
protected Semaphore oFinP1;
protected Semaphore oFinP3;
public p4(Semaphore oFinP1,Semaphore oFinP3)
{
this.oFinP3 = oFinP3;
this.oFinP1 = oFinP1;
}
public void run()
{
try
{
this.oFinP1.acquire();
this.oFinP3.acquire();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
sleep((int) Math.round(500 * Math.random() - 0.5));
}
catch (InterruptedException e)
{
e.printStackTrace();
}
System.out.println("P4");
}
}
import java.util.concurrent.Semaphore;
public class UsoSemaforos
{
protected static Semaphore oFinP1,oFinP3;
public static void main(String[] args)
{
oFinP1 = new Semaphore(0,true);
oFinP3 = new Semaphore(0,true);
(new Thread(new p1(oFinP1))).start();
(new Thread(new p2(oFinP1,oFinP3))).start();
(new Thread(new p3(oFinP3))).start();
(new Thread(new p4(oFinP1,oFinP3))).start();
}
}
Capturas de Pantalla
Sin Semáforos:
Con Semáforos:
Conclusión
Esta práctica principalmente me ayudo a entender los métodos de los Semáforos
implementados en la clase java.util.concurrent.Semaphore, ya que los nombres
son distintos a el tipo de Semáforos que vimos en clase, aunque en esencia
realizan lo mismo, el acquire() es similar al wait() y el release() es muy parecido al
signal().
También se puede notar la diferencia en programar utilizando Semáforos a
comparación de hacerlo con primitivas de Java.

Más contenido relacionado

La actualidad más candente

Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAMichelle Torres
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLGabriel Cortez
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1Clara Patricia Avella Ibañez
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clasesNedoww Haw
 
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...lupita zume
 
Concepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerConcepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerMarcos Omar Cruz Ortrega
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Josue Lara Reyes
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en javaLuis Miguel De Bello
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosJosé Antonio Sandoval Acosta
 
10 Clase Captura De Los Requisitos Cap.6
10 Clase Captura De Los Requisitos  Cap.610 Clase Captura De Los Requisitos  Cap.6
10 Clase Captura De Los Requisitos Cap.6Julio Pari
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - SemáforosJuan Rojas
 
Métodos POO
Métodos POOMétodos POO
Métodos POO1da4
 
Elementos orientados al flujo
Elementos orientados al flujoElementos orientados al flujo
Elementos orientados al flujoAlumic S.A
 

La actualidad más candente (20)

Programación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVAProgramación Orientada a Objetos en JAVA
Programación Orientada a Objetos en JAVA
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Programación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UMLProgramación Orientada a Objetos (POO) y UML
Programación Orientada a Objetos (POO) y UML
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
Programacion Orientada a Objetos
Programacion Orientada a ObjetosProgramacion Orientada a Objetos
Programacion Orientada a Objetos
 
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...2.5 planificación del procesador, niveles objetivos y criterios de planificac...
2.5 planificación del procesador, niveles objetivos y criterios de planificac...
 
Concepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson PenkerConcepto y extensiones de negocio de Eriksson Penker
Concepto y extensiones de negocio de Eriksson Penker
 
Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)Conceptos de POO (Programacion Orientada a Objetos)
Conceptos de POO (Programacion Orientada a Objetos)
 
Modelo Persistente
Modelo PersistenteModelo Persistente
Modelo Persistente
 
Sistemas distribuidos
Sistemas distribuidosSistemas distribuidos
Sistemas distribuidos
 
Administración de memoria en java
Administración de memoria en javaAdministración de memoria en java
Administración de memoria en java
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 
10 Clase Captura De Los Requisitos Cap.6
10 Clase Captura De Los Requisitos  Cap.610 Clase Captura De Los Requisitos  Cap.6
10 Clase Captura De Los Requisitos Cap.6
 
Sistemas Operativos - Semáforos
Sistemas Operativos - SemáforosSistemas Operativos - Semáforos
Sistemas Operativos - Semáforos
 
Vista lógica
Vista lógicaVista lógica
Vista lógica
 
Interbloqueos
InterbloqueosInterbloqueos
Interbloqueos
 
Métodos POO
Métodos POOMétodos POO
Métodos POO
 
Diagramas de comportamientos
Diagramas de comportamientosDiagramas de comportamientos
Diagramas de comportamientos
 
Elementos orientados al flujo
Elementos orientados al flujoElementos orientados al flujo
Elementos orientados al flujo
 

Destacado (17)

Sistema operativos semáforos
Sistema operativos  semáforosSistema operativos  semáforos
Sistema operativos semáforos
 
Semáforos, monitores y paso de mensajes
Semáforos, monitores y paso de mensajesSemáforos, monitores y paso de mensajes
Semáforos, monitores y paso de mensajes
 
Monitores
MonitoresMonitores
Monitores
 
Ingenieria de sotware
Ingenieria de sotwareIngenieria de sotware
Ingenieria de sotware
 
Hilos semaforos
Hilos semaforosHilos semaforos
Hilos semaforos
 
Monitores
MonitoresMonitores
Monitores
 
Sistemas control
Sistemas controlSistemas control
Sistemas control
 
Audio cassete taller #7
Audio cassete taller #7Audio cassete taller #7
Audio cassete taller #7
 
Diapositivas de practica
Diapositivas de practicaDiapositivas de practica
Diapositivas de practica
 
Monitores-sistemas operativos
Monitores-sistemas operativosMonitores-sistemas operativos
Monitores-sistemas operativos
 
Filósofos
FilósofosFilósofos
Filósofos
 
Problema de los Filosofos
Problema de los FilosofosProblema de los Filosofos
Problema de los Filosofos
 
El semáforo
El semáforoEl semáforo
El semáforo
 
Semáforos
SemáforosSemáforos
Semáforos
 
Capitulo7 semaforos
Capitulo7 semaforosCapitulo7 semaforos
Capitulo7 semaforos
 
Semaforos
SemaforosSemaforos
Semaforos
 
Paginas de matematicas
Paginas de matematicasPaginas de matematicas
Paginas de matematicas
 

Similar a Hilos en java

Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)Oscar V
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubGlobalLogic Latinoamérica
 
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetosUnidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetosAmado Arcaya
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018Eudris Cabrera
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENAnaid03
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENJosee Olveeda
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENJosee Olveeda
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...Eudris Cabrera
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02Krizztiina Pacheko
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje javaMargarita Romero
 

Similar a Hilos en java (20)

Programando en java
Programando en javaProgramando en java
Programando en java
 
Clase 4 JAVA 2012
Clase 4 JAVA 2012Clase 4 JAVA 2012
Clase 4 JAVA 2012
 
Clase 4 java 2011
Clase 4 java 2011Clase 4 java 2011
Clase 4 java 2011
 
Modulo6.ppt
Modulo6.pptModulo6.ppt
Modulo6.ppt
 
Leccion 11 Java
Leccion 11 JavaLeccion 11 Java
Leccion 11 Java
 
estructura de un programa en java
estructura de un programa en javaestructura de un programa en java
estructura de un programa en java
 
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
OCP, JSE 6 Programmer (1z0-851) - Guia practica 3 de 7(ap-is)
 
Presentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic ClubPresentación Java Evolution - GlobalLogic Club
Presentación Java Evolution - GlobalLogic Club
 
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetosUnidad 7 conceptos Avanzados en la Programacion orientado a objetos
Unidad 7 conceptos Avanzados en la Programacion orientado a objetos
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 
Chap 15fpin
Chap 15fpinChap 15fpin
Chap 15fpin
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
Diana
DianaDiana
Diana
 
Java
JavaJava
Java
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
 
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
2introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate022introduccionallenguajejava 141109171757-conversion-gate02
2introduccionallenguajejava 141109171757-conversion-gate02
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
 
2) introduccion al lenguaje java
2) introduccion al lenguaje java2) introduccion al lenguaje java
2) introduccion al lenguaje java
 

Último

Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaXimenaFallaLecca1
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUMarcosAlvarezSalinas
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaSantiagoSanchez353883
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAJAMESDIAZ55
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxEverardoRuiz8
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptEduardoCorado
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfKEVINYOICIAQUINOSORI
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfMirthaFernandez12
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptxGARCIARAMIREZCESAR
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfDanielaVelasquez553560
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfMikkaelNicolae
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfrolandolazartep
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7luisanthonycarrascos
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.ariannytrading
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTFundación YOD YOD
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfmatepura
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.ALEJANDROLEONGALICIA
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMarceloQuisbert6
 

Último (20)

Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO CersaSesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
Sesión 02 TIPOS DE VALORIZACIONES CURSO Cersa
 
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERUSesion 02 Patentes REGISTRO EN INDECOPI PERU
Sesion 02 Patentes REGISTRO EN INDECOPI PERU
 
TALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación públicaTALLER PAEC preparatoria directamente de la secretaria de educación pública
TALLER PAEC preparatoria directamente de la secretaria de educación pública
 
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESAIPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
IPERC Y ATS - SEGURIDAD INDUSTRIAL PARA TODA EMPRESA
 
Unidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptxUnidad 3 Administracion de inventarios.pptx
Unidad 3 Administracion de inventarios.pptx
 
Introducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.pptIntroducción a los sistemas neumaticos.ppt
Introducción a los sistemas neumaticos.ppt
 
Elaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdfElaboración de la estructura del ADN y ARN en papel.pdf
Elaboración de la estructura del ADN y ARN en papel.pdf
 
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdfPresentación Proyecto Trabajo Creativa Profesional Azul.pdf
Presentación Proyecto Trabajo Creativa Profesional Azul.pdf
 
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
4.6 DEFINICION DEL PROBLEMA DE ASIGNACION.pptx
 
clases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdfclases de dinamica ejercicios preuniversitarios.pdf
clases de dinamica ejercicios preuniversitarios.pdf
 
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdfReporte de simulación de flujo del agua en un volumen de control MNVA.pdf
Reporte de simulación de flujo del agua en un volumen de control MNVA.pdf
 
Linealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdfLinealización de sistemas no lineales.pdf
Linealización de sistemas no lineales.pdf
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7sistema de construcción Drywall semana 7
sistema de construcción Drywall semana 7
 
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
SOLICITUD-PARA-LOS-EGRESADOS-UNEFA-2022.
 
Una estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NISTUna estrategia de seguridad en la nube alineada al NIST
Una estrategia de seguridad en la nube alineada al NIST
 
ECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdfECONOMIA APLICADA SEMANA 555555555544.pdf
ECONOMIA APLICADA SEMANA 555555555544.pdf
 
Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.Flujo potencial, conceptos básicos y ejemplos resueltos.
Flujo potencial, conceptos básicos y ejemplos resueltos.
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
Magnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principiosMagnetismo y electromagnetismo principios
Magnetismo y electromagnetismo principios
 

Hilos en java

  • 1. 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 Alejandro Bravo Arredondo Matricula: 200824268 20 de septiembre de 2011
  • 2. Introducción En esta práctica vamos a hacer uso de los Semáforos para realizar la exclusión mutua en la región critica, para esto hay que dar una breve introducción de lo que es un semáforo; Un semáforo es una variable especial (o tipo abstracto de datos) que constituye el método clásico para restringir o permitir el acceso a recursos compartidos (por ejemplo, un recurso de almacenamiento del sistema o variables del código fuente) en un entorno de multiprocesamiento (en el que se ejecutarán varios procesos concurrentemente). Java desde la versión 1.5 contiene la clase java.util.concurrent.Semaphore para el uso de Semáforos, o podemos crear nuestra propia clase Semáforos con los métodos WAIT() y SIGNAL() los cuales bloquean y liberan a un proceso respectivamente… Objetivo Hacer uso y entender el comportamiento de los Semáforos como herramienta para la programación concurrente de hilos en Java, también en esta práctica debemos notar la diferencia entre dos programas que realizan lo mismo, pero uno usando métodos de sincronización con primitivas de Java y el otro con semáforos.
  • 3. Código 1. Explica la diferencia entre los dos códigos de semáforos R= La diferencia es que un código utiliza las primitivas de Java para lograr la sincronización de los hilos, para ser exactos, utiliza el método sleep(), y el otro código hace uso de la clase java.util.concurrent.Semaphore para implementar los Semáforos de Java y con éstos logras la exclusión mutua de los hilos. 2. Explica los métodos de Java utilizados en el Código de Con semáforos. R= Cada semáforo tiene estos 2 métodos: acquire () bloquea si es necesario un hilo hasta que un permiso esté disponible. Y release () añade un permiso, el cual puede desbloquear un acquire (). 3. ¿Por qué se utilizan variables protegidas y estáticas? R= Porque las variables protegidas, que son los Semáforos, se usan así para que otras subclases de otros paquetes no puedan acceder, modificar su valor y causar un comportamiento inesperado, las estáticas se usan porque son variables “de clase” y así se podrán usar en el Main de Programa. 4. Especifica que recurso se comparte entre los semáforos R= Se comparte el valor del semáforo, si el contador de éste es 0 puede acceder a la región critica, de lo contrario tendrá que esperar un release(). 5. ¿Qué se utilizó para la sincronización y cómo se implementó? R= Para la sincronización con primitivas de Java se utilizó solo el método sleep(), sin ninguna condición, solo el hilo dormía un tiempo aleatorio, luego imprimía el texto asignado y finalmente terminaba, esto es lo mismo para los 4 hilos que se crean.
  • 4. 6. Se presenta la exclusión mutua en este ejercicio, ¿explica de qué manera? R= Si se presenta, ya que los hilos no pueden acceder al mismo recurso compartido al mismo tiempo, para esto se utilizó la sincronización por primitivas de Java y los Semáforos para realizar la exclusión mutua y que uno, y solo un hilo accediera a la región critica por vez. Sin Semáforos: public class p1 extends Thread { public void run() { try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P1"); } } public class p2 extends Thread { public void run() { try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P2"); } } public class p3 extends Thread { public void run() {
  • 5. try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P3"); } } public class p4 extends Thread { public void run() { try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P4"); } } public class SinSemaforos { public static void main(String[] args) { (new Thread(new p1())).start(); (new Thread(new p2())).start(); (new Thread(new p3())).start(); (new Thread(new p4())).start(); } } Con Semáforos: import java.util.concurrent.Semaphore; public class p1 extends Thread { protected Semaphore oFinP1;
  • 6. public p1(Semaphore oFinP1) { this.oFinP1 = oFinP1; } public void run() { try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P1"); this.oFinP1.release(2); } } import java.util.concurrent.Semaphore; public class p2 extends Thread { protected Semaphore oFinP1; protected Semaphore oFinP3; public p2(Semaphore oFinP1,Semaphore oFinP3) { this.oFinP3 = oFinP3; this.oFinP1 = oFinP1; } public void run() { try { this.oFinP1.acquire(); this.oFinP3.acquire(); } catch(Exception e) { e.printStackTrace(); } try
  • 7. { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P2"); } } import java.util.concurrent.Semaphore; public class p3 extends Thread { protected Semaphore oFinP3; public p3(Semaphore oFinP3) { this.oFinP3 = oFinP3; } public void run() { try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P3"); this.oFinP3.release(2); } } import java.util.concurrent.Semaphore; public class p4 extends Thread { protected Semaphore oFinP1; protected Semaphore oFinP3; public p4(Semaphore oFinP1,Semaphore oFinP3) { this.oFinP3 = oFinP3;
  • 8. this.oFinP1 = oFinP1; } public void run() { try { this.oFinP1.acquire(); this.oFinP3.acquire(); } catch(Exception e) { e.printStackTrace(); } try { sleep((int) Math.round(500 * Math.random() - 0.5)); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("P4"); } } import java.util.concurrent.Semaphore; public class UsoSemaforos { protected static Semaphore oFinP1,oFinP3; public static void main(String[] args) { oFinP1 = new Semaphore(0,true); oFinP3 = new Semaphore(0,true); (new Thread(new p1(oFinP1))).start(); (new Thread(new p2(oFinP1,oFinP3))).start(); (new Thread(new p3(oFinP3))).start(); (new Thread(new p4(oFinP1,oFinP3))).start(); } }
  • 9. Capturas de Pantalla Sin Semáforos: Con Semáforos:
  • 10. Conclusión Esta práctica principalmente me ayudo a entender los métodos de los Semáforos implementados en la clase java.util.concurrent.Semaphore, ya que los nombres son distintos a el tipo de Semáforos que vimos en clase, aunque en esencia realizan lo mismo, el acquire() es similar al wait() y el release() es muy parecido al signal(). También se puede notar la diferencia en programar utilizando Semáforos a comparación de hacerlo con primitivas de Java.