SlideShare una empresa de Scribd logo
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

Colisiones dominios de colisión y segmentación
Colisiones dominios de colisión y segmentaciónColisiones dominios de colisión y segmentación
Colisiones dominios de colisión y segmentaciónBetty Ayllon
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosJosepSalvadorSotoObregon
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
Laura Guadalupe Rosado Hernández
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetosyoiner santiago
 
Estructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativoEstructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativo
Yurley Ochoa
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
Sara Martínez Gómez
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
itzayana bacilio
 
Sencilla explicación sobre AES
Sencilla explicación sobre AESSencilla explicación sobre AES
Sencilla explicación sobre AES
Elvis Vinda
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridadGarNav
 
003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc
Javier Chávez Centeno
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
Ashley Stronghold Witwicky
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
José Antonio Sandoval Acosta
 
Modelo entidad relacion (chen)
Modelo entidad relacion (chen)Modelo entidad relacion (chen)
Modelo entidad relacion (chen)
Rocio Vicente Navas
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores JUANR1022
 
MODELO ENTIDAD RELACION
MODELO ENTIDAD RELACION MODELO ENTIDAD RELACION
MODELO ENTIDAD RELACION
Ricky James Simon
 
ARQUITECTURA CLIENTE SERVIDOR.pdf
ARQUITECTURA CLIENTE SERVIDOR.pdfARQUITECTURA CLIENTE SERVIDOR.pdf
ARQUITECTURA CLIENTE SERVIDOR.pdf
DavidVeraOlivera
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesosAbimael hernandez
 

La actualidad más candente (20)

Colisiones dominios de colisión y segmentación
Colisiones dominios de colisión y segmentaciónColisiones dominios de colisión y segmentación
Colisiones dominios de colisión y segmentación
 
Algebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datosAlgebra relacional fundamentos de base de datos
Algebra relacional fundamentos de base de datos
 
Noción de archivo real y virtual
Noción de archivo real y virtual Noción de archivo real y virtual
Noción de archivo real y virtual
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Analizador léxico
Analizador léxicoAnalizador léxico
Analizador léxico
 
Analisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A ObjetosAnalisis Y DiseñO Orientado A Objetos
Analisis Y DiseñO Orientado A Objetos
 
Estructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativoEstructura jerarquica de un sistema operativo
Estructura jerarquica de un sistema operativo
 
Tutorial de JFLAP
Tutorial de JFLAPTutorial de JFLAP
Tutorial de JFLAP
 
Dispositvos de entrada y salida
Dispositvos de entrada y salidaDispositvos de entrada y salida
Dispositvos de entrada y salida
 
Sencilla explicación sobre AES
Sencilla explicación sobre AESSencilla explicación sobre AES
Sencilla explicación sobre AES
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridad
 
003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc003 sobrecarga de operadores jdchc
003 sobrecarga de operadores jdchc
 
Tecnicas de Administracion de Memoria
Tecnicas de Administracion de MemoriaTecnicas de Administracion de Memoria
Tecnicas de Administracion de Memoria
 
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datosTópicos Avanzados de Programación - Unidad 4 Acceso a datos
Tópicos Avanzados de Programación - Unidad 4 Acceso a datos
 
Modelo entidad relacion (chen)
Modelo entidad relacion (chen)Modelo entidad relacion (chen)
Modelo entidad relacion (chen)
 
Arquitectura Multiprocesadores
Arquitectura Multiprocesadores Arquitectura Multiprocesadores
Arquitectura Multiprocesadores
 
MODELO ENTIDAD RELACION
MODELO ENTIDAD RELACION MODELO ENTIDAD RELACION
MODELO ENTIDAD RELACION
 
ARQUITECTURA CLIENTE SERVIDOR.pdf
ARQUITECTURA CLIENTE SERVIDOR.pdfARQUITECTURA CLIENTE SERVIDOR.pdf
ARQUITECTURA CLIENTE SERVIDOR.pdf
 
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTEPROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE
 
Problemas de sincronizacion de procesos
Problemas de sincronizacion de procesosProblemas de sincronizacion de procesos
Problemas de sincronizacion de procesos
 

Destacado

Sistema operativos semáforos
Sistema operativos  semáforosSistema operativos  semáforos
Sistema operativos semáforos
Jesus Martinez
 
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 mensajesdruckern
 
Ingenieria de sotware
Ingenieria de sotwareIngenieria de sotware
Ingenieria de sotware
petronilosantos
 
Hilos semaforos
Hilos semaforosHilos semaforos
Hilos semaforos
Juan Carlos García Ojeda
 
Monitores
MonitoresMonitores
Sistemas control
Sistemas controlSistemas control
Sistemas controlaster1
 
Audio cassete taller #7
Audio cassete taller #7Audio cassete taller #7
Audio cassete taller #7
Keila Ábrego
 
Diapositivas de practica
Diapositivas de practicaDiapositivas de practica
Diapositivas de practica
angie blanco de perez
 
Monitores-sistemas operativos
Monitores-sistemas operativosMonitores-sistemas operativos
Monitores-sistemas operativos
Daniel Vargas
 
El semáforo
El semáforoEl semáforo
Semáforos
SemáforosSemáforos
Semáforos
Ektwr1982
 
Capitulo7 semaforos
Capitulo7 semaforosCapitulo7 semaforos
Capitulo7 semaforos
Johnny Ortiz
 
Semaforos
SemaforosSemaforos
Paginas de matematicas
Paginas de matematicasPaginas de matematicas
Paginas de matematicas
espanol
 

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
 
Hilos En Java
Hilos En JavaHilos En Java
Modulo6.ppt
Modulo6.pptModulo6.ppt
Modulo6.ppt
ssuser73f459
 
estructura de un programa en java
estructura de un programa en javaestructura de un programa en java
estructura de un programa en java
Beydasanchezhernandez
 
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 Club
GlobalLogic 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 objetos
Amado 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 2018
Eudris Cabrera
 
Chap 15fpin
Chap 15fpinChap 15fpin
Chap 15fpin
Alvaro Pino
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
Anaid03
 
Diana
DianaDiana
Java
JavaJava
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
Josee Olveeda
 
CUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMENCUESTIONARIO PARA PRIMER EXAMEN
CUESTIONARIO PARA PRIMER EXAMEN
Josee 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-gate02
Krizztiina Pacheko
 
INTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVAINTRODUCCION LENGUAJE JAVA
INTRODUCCION LENGUAJE JAVA
Karla Estefania Villanueva Epigmenio
 

Similar a Hilos en java (20)

Programando en java
Programando en javaProgramando en java
Programando en java
 
Hilos En Java
Hilos En JavaHilos En Java
Hilos En Java
 
Clase 4 java 2011
Clase 4 java 2011Clase 4 java 2011
Clase 4 java 2011
 
Clase 4 JAVA 2012
Clase 4 JAVA 2012Clase 4 JAVA 2012
Clase 4 JAVA 2012
 
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
 

Último

Curso Basico de DIgSILENT power factorys
Curso Basico de DIgSILENT power factorysCurso Basico de DIgSILENT power factorys
Curso Basico de DIgSILENT power factorys
LuisPerezIgnacio1
 
Sesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdfSesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdf
DeyvisPalomino2
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
Hidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggfHidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggf
JavierAlejosM
 
1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV
CarlosAroeira1
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
mesiassalazarpresent
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
ValGS2
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
everchanging2020
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
MiriamAquino27
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.
thatycameron2004
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
LuisEnriqueCarboneDe
 
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
JuanChaparro49
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
NicolasGramajo1
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
CarlitosWay20
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
joseabachesoto
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
JhonatanOQuionesChoq
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
AldithoPomatay2
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
GROVER MORENO
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
mirellamilagrosvf
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
LuisLobatoingaruca
 

Último (20)

Curso Basico de DIgSILENT power factorys
Curso Basico de DIgSILENT power factorysCurso Basico de DIgSILENT power factorys
Curso Basico de DIgSILENT power factorys
 
Sesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdfSesiones 3 y 4 Estructuras Ingenieria.pdf
Sesiones 3 y 4 Estructuras Ingenieria.pdf
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
Hidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggfHidrostatica_e_Hidrodinamica.pdggggggggf
Hidrostatica_e_Hidrodinamica.pdggggggggf
 
1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV1º Caso Practico Lubricacion Rodamiento Motor 10CV
1º Caso Practico Lubricacion Rodamiento Motor 10CV
 
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuariaBOTAnica mesias orland role.pptx1 ciclo agropecuaria
BOTAnica mesias orland role.pptx1 ciclo agropecuaria
 
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptxDesbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
Desbalanceo Rotatorio cabeceo de flechas y elementos rotativos_GSV.pptx
 
Vehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebralVehiculo para niños con paralisis cerebral
Vehiculo para niños con paralisis cerebral
 
libro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdflibro conabilidad financiera, 5ta edicion.pdf
libro conabilidad financiera, 5ta edicion.pdf
 
Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.Flujograma de gestión de pedidos de usuarios.
Flujograma de gestión de pedidos de usuarios.
 
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).docEjercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
Ejercicios-de-Divisibilidad-para-Primero-de-Primaria (3).doc
 
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
CODIGO DE SEÑALES Y COLORES NTP399 - ANEXO 17 DS 024
 
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdfLas Fuentes de Alimentacion Conmutadas (Switching).pdf
Las Fuentes de Alimentacion Conmutadas (Switching).pdf
 
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
PROCEDIMIENTO Y PLAN DE RESCATE PARA TRABAJOS EN ALTURAS (Recuperado automáti...
 
Diagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdfDiagrama de flujo "Resolución de problemas".pdf
Diagrama de flujo "Resolución de problemas".pdf
 
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
SESION 1 - SESION INTRODUCTORIA - INTRODUCCIÓN A LA PERFORACIÓN Y VOLADURA DE...
 
Voladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.pptVoladura de mineria subterránea pppt.ppt
Voladura de mineria subterránea pppt.ppt
 
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdfHITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
HITO DE CONTROL N° 011-2024-OCI5344-SCC SAN PATRICIO.pdf
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
 
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA  PPTCONTROL DE MOTORES DE CORRIENTE ALTERNA  PPT
CONTROL DE MOTORES DE CORRIENTE ALTERNA PPT
 

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.