SlideShare una empresa de Scribd logo
Instituto Tecnológico Superior de Felipe Carrillo Puerto
Ingeniería en Sistemas Computacionales
Materia: Tópicos Avanzados de Programación
Docente: Dr. Niels Henryk Aranda Cuevas
Reporte Técnico
Unidad 4: Programación concurrente (multihilos)
Integrantes:
Chable Pat Jhonny Gabriel
Balam Yam Wilberth
Ayala Mutul Ezer Abizai
Vega Segura Adrián Asís
Poot Tuz Efraín Antonio
Aké Pech Jorge Manuel
Semestre: 4th
Aula: J-3 Grupo: “a”
Ciclo Escolar: Enero – Julio
Unidad 4: Programación concurrente (multihilos)
Fundamentos De Programación Concurrente
• Un programa multihilo contiene dos o más partes que pueden ejecutarse de forma
concurrente. Cada parte de ese programa se llama hilo (thread) y cada hilo
establece un camino de ejecución independiente. Es un tipo de multitarea distinta a
la multitarea por procesos, la cual ejecuta varios programas a la vez. En Java, es
un solo programa con varios hilos a la vez. A continuación se iniciará el desarrollo
de un ejemplo sencillo de hilos en java.
1. Ingresa a NetBeans y crea un proyecto tipo Java Application de la categoría
Java. Nombre este proyecto como dskHilos.
2. Pulse sobre el nombre del proyecto dskHilos y en el menú de contexto que
se muestra seleccione Java Package… de la opción Nuevo. Nombre esta
carpeta Logica.
3. Repita el paso anterior y cree otro paquete denominado Fisica
4. Una vez creados los paquetes pulse con el botón derecho del mouse sobre
el paquete Fisica y cree un objeto JFrame de nombre FormaHilos.
5. En JFrame creado insertar 4 tablas JTable, una en la parte superior donde
se almacenan los resultados, y tres del mismo tamaño en la parte inferior.
Cada tabla simulara valores expresados como movimientos de cada jugador.
Ubica una serie de etiquetas y botones. Las tres etiquetas que aparecen
debajo de los JTable se denominan lblJugador1, lblJugador2 y lblJugador3,
respectivamente. Más debajo de éstas aparecen 3 botones de nombre:
btnJugar, btnReinicioJuego y btnGenerarTabla.
6. Ahora proceda a crear las clases en el paquete Logica que permitirán el
funcionamiento de los tres jugadores. Procede a crear la primera clase
nómbrala clsJugador1. El código es el siguiente:
Código: clsJugador1.
package Logica;
import javax.swing.JOptionPane;
public class clsJugador1 extends Thread{
private int numero;
private String nombre;
private boolean continuar = true;
//Constructor
public clsJugador1()
{
numero = 1; //le asigna el numero 1 al jugador 1.
nombre = JOptionPane.showInputDialog(null,"Digite el nombre del
Jugador 1: ");
}
public int getNumero(){return numero;} //para devolver el número del
jugador
public String getNombre(){return nombre;}
public Fisica.FormaHilos formHilo; //declara una variable de tipo
FormaHilos
public clsJugador1(Fisica.FormaHilos aThis) { //constructor que
recibe
formHilo = aThis; //defecto el formulario FormaHilos y lo asigna
a formHilo.
}
public void detenerHilo()
{ //método para detener la ejecución del hilo.
continuar = false;
}
@Override //se sobrescribe el método run
@SuppressWarnings("SleepWhileInLoop")
public void run()
{
while (continuar) { //hágase mientras continuar sea
verdadero
try {
int avance = (int) (Math.random() * 4); //establece el avance
de jugador 1
formHilo.moverJugador1(avance); //invoca al método
moverJugador1 que se encuentra en el formulario FormaHilos
continuar = formHilo.seguir; //para validar si
se debe continuar.
Thread.sleep(150); //descansa por 15
segundos...
} catch (InterruptedException ex) {
System.out.checkError();
}
}
}
}
Código: clsJugador2.
package Logica;
import javax.swing.JOptionPane;
public class clsJugador2 extends Thread{
private int numero;
private String nombre;
private boolean continuar = true;
public clsJugador2() {
numero = 2; //le asigna el numero 2 al jugador 2.
nombre = JOptionPane.showInputDialog(null,"Digite el nombre del Jugador
2.");
}
public int getNumero(){return numero;} //para devolver el numero del
jugador
public String getNombre(){return nombre;}
public Fisica.FormaHilos formHilo; //declara una variable de tipo
FormaHilos
public clsJugador2(Fisica.FormaHilos aThis) { //constructor que recibe por
formHilo = aThis; //defecto el formulario FormaHilos y lo asigna a formHilo.
}
public void detenerHilo(){ //método para detener la ejecución del hilo.
continuar = false;
}
@Override //se sobrescribe el método run
public void run()
{
while (continuar) { //hágase mientras continuar sea verdadero
try {
int avance = (int) (Math.random() * 4); //establece el avance de jugador
2
formHilo.moverJugador2(avance); //invoca al método moverJugador2 que se
//encuentra en el formulario FormaHilos
continuar = formHilo.seguir; //para validar si se debe continuar.
Thread.sleep(150); //descansa por 15 segundos...
} catch (InterruptedException ex) {
} //Fin catch
} //Fin try
} //Fin método Run
} //Fin de la clase
Código: clsJugador3.
package Logica;
import javax.swing.JOptionPane;
public class clsJugador3 extends Thread {
private int numero;
private String nombre;
private boolean continuar = true;
public clsJugador3() {
numero = 3; //le asigna el numero 3 al jugador 3.
nombre = JOptionPane.showInputDialog(null,"Digite el nombre del Jugador
3.");
}
public int getNumero(){return numero;} //para devolver el numero del
jugador
public String getNombre(){return nombre;}
public Fisica.FormaHilos formHilo; //declara una variable de tipo
FormaHilos
public clsJugador3(Fisica.FormaHilos aThis) { //constructor que recibe por
formHilo = aThis; //defecto el formulario FormaHilos y lo asigna a formHilo.
}
public void detenerHilo(){ //método para detener la ejecución del hilo.
continuar = false;
}
@Override //se sobrescribe el método run
public void run()
{
while (continuar) { //hágase mientras continuar sea verdadero
try {
int avance = (int) (Math.random() * 4); //establece el avance de jugador
1
formHilo.moverJugador3(avance); //invoca al método moverJugador3 que se
//encuentra en el formulario FormaHilos
continuar = formHilo.seguir; //para validar si se debe continuar.
Thread.sleep(150); //descansa por 15 segundos...
} catch (InterruptedException ex) {
} //Fin catch
} //Fin try
} //Fin Run
} //Fin clase
Una vez que se ha escrito el código para las tres clases que procesarán a cada
jugador, proceda a escribir el código que radicará en el formulario principal
(FormaHilos.Java) Dicho código es el siguiente:
package Fisica;
import Logica.clsJugador1;
import Logica.clsJugador2;
import Logica.clsJugador3;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
public class FormaHilos extends javax.swing.JFrame {
javax.swing.table.DefaultTableModel modeloTabla = new
javax.swing.table.DefaultTableModel();
javax.swing.table.DefaultTableModel modTablaJugador1 = new
javax.swing.table.DefaultTableModel();
javax.swing.table.DefaultTableModel modTablaJugador2 = new
javax.swing.table.DefaultTableModel();
javax.swing.table.DefaultTableModel modTablaJugador3 = new
javax.swing.table.DefaultTableModel();
Object[] filas = new Object[24];
Object[] datosJugador1 = new Object[3]; //columnas celdaAvance,
Object[] datosJugador2 = new Object[3];
Object[] datosJugador3 = new Object[3];
public Boolean seguir = true;
int celdaJugador1=0;
int celdaJugador2=0;
int celdaJugador3=0;
int p=0;int q=0; int m=0;
//Se instancias las clases que están en otro paquete (Logica)
clsJugador1 jug1 = new clsJugador1();
clsJugador2 jug2 = new clsJugador2();
clsJugador3 jug3 = new clsJugador3();
public FormaHilos() {
initComponents();
//Creamos los componentas Tipo Etiqueta
JLabel
Nombre1=lblNombreJug1,Nombre2=lblNombreJug2,Nombre3=lblNombreJug3;
cargarTabla();
//Creamos las etiquetas y le damos formato de fuente y tamaño
Nombre1.setText("Jugador : "+jug1.getNombre().toUpperCase());
Nombre1.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
Nombre2.setText("Jugador "+jug2.getNombre().toUpperCase());
Nombre2.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
Nombre3.setText("Jugador : "+jug3.getNombre().toUpperCase());
Nombre3.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
}
void cargarDetalle() {
for (int i=0;i<24;i++){
filas[i]=0; }
for(int x=1;x<=3;x++){
int numero = (int) (Math.random()*22+1); //para generar los
numeros.
filas[numero]= -1; }
modeloTabla.addRow(filas); //carga el modelo con los datos
obtenidos
Tabla.setModel(modeloTabla); //carga el modelo en JTab
//tabEmpleados
}
private void cargarTabla(){
for (int i=1;i<=24;i++){
modeloTabla.addColumn(String.valueOf(i)); }
cargarDetalle();
}
public void limpiarTabla(javax.swing.JTable miTabla)
{
DefaultTableModel modelo = (DefaultTableModel)
miTabla.getModel();
while(modelo.getRowCount()>0)
modelo.removeRow(0);
celdaJugador1=0;
celdaJugador2=0;
celdaJugador3=0;
seguir = true;
}
void confTablaJugadores(javax.swing.table.DefaultTableModel Modelo)
{
Modelo.addColumn("Celda Avance");
Modelo.addColumn("Contenido de la Celda");
Modelo.addColumn("Celda Actual");
}
public void moverJugador1(int celda) {
try{
celdaJugador1+=celda;
if (celdaJugador1 >= 24 && seguir == true )
{
celdaJugador1=24;
seguir = false;
JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador
No."+String.valueOf(jug1.getNumero()) +", " +
jug1.getNombre().toUpperCase());
} //aqui gana el jugador...
if (celdaJugador1 <= 24) {
Object valorCelda = Tabla.getValueAt(0,celdaJugador1);
if ( "-1".equals(valorCelda.toString())) celdaJugador1 = 0;
if (p == 0) {confTablaJugadores(this.modTablaJugador1);p=1;}
datosJugador1[0]=String.valueOf(celda);
datosJugador1[1]=valorCelda;
datosJugador1[2]=celdaJugador1;
modTablaJugador1.addRow(datosJugador1);
tablaJugador1.setModel(modTablaJugador1);
JLabel Jugad1=lblJugador1;
Jugad1.setText("Interacciones:
"+String.valueOf(modTablaJugador1.getRowCount()));
Jugad1.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
}
} catch (Exception ex){
System.out.printf(ex.getMessage());
seguir = false;
}
}
public void moverJugador2(int celda) {
try{
celdaJugador2+=celda;
if (celdaJugador2 >= 24 && seguir == true ) {
celdaJugador2=24;
seguir = false;
JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador
No."+String.valueOf(jug2.getNumero()) +
", " + jug2.getNombre().toUpperCase());
} //aqui gana el jugador...
if (celdaJugador2 <= 24) {
Object valorCelda = Tabla.getValueAt(0,celdaJugador2);
if ( "-1".equals(valorCelda.toString()))
celdaJugador2 = 0;
if (q == 0) {
confTablaJugadores(this.modTablaJugador2);q=1;}
datosJugador2[0]=String.valueOf(celda);
datosJugador2[1]=valorCelda;
datosJugador2[2]=celdaJugador2;
modTablaJugador2.addRow(datosJugador2);
tablaJugador2.setModel(modTablaJugador2);
JLabel Jugad2=lblJugador2;
Jugad2.setText("Interacciones:
"+String.valueOf(modTablaJugador2.getRowCount()));
Jugad2.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
}
} catch (Exception ex){
System.out.printf(ex.getMessage());
seguir = false; }
}
public void moverJugador3(int celda) {
try{
celdaJugador3+=celda;
if (celdaJugador3 >= 24 && seguir == true ) {
celdaJugador3=24;
seguir = false;
JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador
No."+String.valueOf(jug3.getNumero()) +
", " + jug3.getNombre().toUpperCase());
} //aqui gana el jugador
if (celdaJugador3 <= 24) {
Object valorCelda = Tabla.getValueAt(0,celdaJugador3);
if ( "-1".equals(valorCelda.toString())) celdaJugador3 = 0;
if (m == 0) {confTablaJugadores(this.modTablaJugador3);m=1;}
datosJugador3[0]=String.valueOf(celda);
datosJugador3[1]=valorCelda;
datosJugador3[2]=celdaJugador3;
modTablaJugador3.addRow(datosJugador3);
tablaJugador3.setModel(modTablaJugador3);
JLabel Jugad3=lblJugador3;
Jugad3.setText("Interacciones:
"+String.valueOf(modTablaJugador3.getRowCount()));
Jugad3.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
}
} catch (Exception ex)
{
System.out.printf(ex.getMessage());
seguir = false;
}
}
Código botón btnReiniciarJuego
private void btnReiniciarJuegoActionPerformed(java.awt.event.ActionEvent
evt) {
// TODO add your handling code here:
limpiarTabla(this.tablaJugador1);
limpiarTabla(this.tablaJugador2);
limpiarTabla(this.tablaJugador3);
btnJugar.setEnabled(true);
btnReiniciarJuego.setEnabled(false);
lblJugador1.setText("Interacciones: 0");
lblJugador2.setText("Interacciones: 0");
lblJugador3.setText("Interacciones: 0");
}
Código botón btnGenerarTabla
private void btnGenerarTablaActionPerformed(java.awt.event.ActionEvent
evt){
// TODO add your handling code here:
modeloTabla.removeRow(0);
Tabla.setModel(modeloTabla);
cargarDetalle();
}
Código botón btnJugar
private void btnJugarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
clsJugador1 j1;
j1 = new clsJugador1(this);
clsJugador2 j2;
j2 = new Logica.clsJugador2(this);
clsJugador3 j3;
j3 = new Logica.clsJugador3(this);
j1.start();
j2.start();
j3.start();
if (seguir == false)
{
j1 = null;
j2 = null;
j3 = null;
}
btnJugar.setEnabled(false);
btnReiniciarJuego.setEnabled(true);
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new FormaHilos().setVisible(true);
} //Fin Run
});
} //Fin Main
CONCLUSIÓN
BALAM YAM WILBERTH:
En esta cuarta unidad abarcamos el tema de la programación en hilos o
programación concurrente, que nos ayuda a que nuestro software realice varias
tareas “Simultáneamente”. Y eso nos puede resolver varios problemas en el
desarrollo de software.
POOT TUZ EFRAIN ANTONIO
En la unidad cuatro vimos lo que son los hilos los hilos en java son básicamente en
forma para poder ejecutar varios procesos simultáneamente en nuestros programas
en java para poder ver o crear los hilos tenemos que crear una clase Thread o
reescribir el método principal “rum()”” el cual se va a ejecutar principalmente al inicial
un hilo, Thread o un nuevo proceso en java.
AYALA MUTUL EZER ABISAI
En la unidad cuatro se desarrolló una aplicación de escritorio, donde se aplicó el
funcionamiento de packages que vimos en la unidad anterior, igual vimos cómo
aplicar como aplicar el funcionamiento de hilos esto nos ayudara al manejo de
varias tareas simultaneas.
AKE PECH JORGE MANUEL
Aprendimos a hacer programación en hilos en la cual son procesos independientes
en la cual se está ejecutando programas. Y eso nos ayuda mucho en el momento
de desarrollar un software.
CHABLE PAT JHONNY GABRIEL
En esta unidad realizamos algunas prácticas con los multihilos y aprendimos que
los hilos son un conjunto de acciones independientes que se activan durante la
ejecución de un programa. Que son útiles cuando se necesitan realizar varias
acciones a la vez de manera organizada sin afectar otras funciones en un programa.
Lo mejor que hemos aprendido en esta unidad es saber implementar los hilos en
nuestros programas, para realizar diferentes acciones determinadas. Y para
finalizar, aprendimos a utilizar el código que se utiliza.
VEGA SEGURA ADRIÁN ASÍS
En esta unidad vimos lo que la programación concurrente y su utilidad en el
software. Podemos decir que un programa multi hilo contiene dos o más partes que
pueden ejecutarse de forma concurrente. El programa contiene hilos que viene
siendo como caminos con su propio código. Se puede ejecutar paras hilos a la vez
pero es muy diferente a los procesos porque los procesos son independientes y los
hilos forman parte de un solo programa.

Más contenido relacionado

La actualidad más candente

Introducción a la programación en Python (día 2)
Introducción a la programación en Python (día 2)Introducción a la programación en Python (día 2)
Introducción a la programación en Python (día 2)
CodeSyntax
 
Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)
Jyoc X
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidasalenco
 
Semana 6 Módulos en Python Entrega 2
Semana 6   Módulos en Python Entrega 2Semana 6   Módulos en Python Entrega 2
Semana 6 Módulos en Python Entrega 2
Richard Eliseo Mendoza Gafaro
 
Informe karen jacome
Informe karen jacomeInforme karen jacome
Informe karen jacome
MauricioPumalpa
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
Richard Eliseo Mendoza Gafaro
 
Fun consola guia_01
Fun consola guia_01Fun consola guia_01
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de controlElena Perz
 
Programas e informes Programación
Programas e informes ProgramaciónProgramas e informes Programación
Programas e informes Programación
MauricioPumalpa
 
Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcaciones
Jyoc X
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
Jyoc X
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unit
Jyoc X
 
Personalizar gui guia_3
Personalizar gui guia_3Personalizar gui guia_3
Prog_II_Eventos_guia_2
Prog_II_Eventos_guia_2Prog_II_Eventos_guia_2
Jyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzadoJyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzado
Jyoc X
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)
jmiguel rodriguez
 
Programación básica
Programación básicaProgramación básica
Programación básica
Carlos Van de Velde
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
jbersosa
 

La actualidad más candente (20)

Introducción a la programación en Python (día 2)
Introducción a la programación en Python (día 2)Introducción a la programación en Python (día 2)
Introducción a la programación en Python (día 2)
 
Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)Jyoc java-cap05 metodos (funciones)
Jyoc java-cap05 metodos (funciones)
 
C6 net beansentradasysalidas
C6 net beansentradasysalidasC6 net beansentradasysalidas
C6 net beansentradasysalidas
 
Ejercicios3
Ejercicios3Ejercicios3
Ejercicios3
 
Semana 6 Módulos en Python Entrega 2
Semana 6   Módulos en Python Entrega 2Semana 6   Módulos en Python Entrega 2
Semana 6 Módulos en Python Entrega 2
 
Informe karen jacome
Informe karen jacomeInforme karen jacome
Informe karen jacome
 
Semana 6 Módulos Clases y Objetos
Semana 6   Módulos Clases y ObjetosSemana 6   Módulos Clases y Objetos
Semana 6 Módulos Clases y Objetos
 
Fun consola guia_01
Fun consola guia_01Fun consola guia_01
Fun consola guia_01
 
Estructuras de control
Estructuras de controlEstructuras de control
Estructuras de control
 
Programas e informes Programación
Programas e informes ProgramaciónProgramas e informes Programación
Programas e informes Programación
 
Jyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcacionesJyoc java-cap02 bifurcaciones
Jyoc java-cap02 bifurcaciones
 
Jyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datosJyoc java-cap16 persistencia. bases de datos
Jyoc java-cap16 persistencia. bases de datos
 
Jyoc java-cap23 j unit
Jyoc java-cap23 j unitJyoc java-cap23 j unit
Jyoc java-cap23 j unit
 
Personalizar gui guia_3
Personalizar gui guia_3Personalizar gui guia_3
Personalizar gui guia_3
 
Prog_II_Eventos_guia_2
Prog_II_Eventos_guia_2Prog_II_Eventos_guia_2
Prog_II_Eventos_guia_2
 
Guia1 pii
Guia1 piiGuia1 pii
Guia1 pii
 
Jyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzadoJyoc java-cap21 jse avanzado
Jyoc java-cap21 jse avanzado
 
Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)Clean Code (Presentacion interna en Virtual Software)
Clean Code (Presentacion interna en Virtual Software)
 
Programación básica
Programación básicaProgramación básica
Programación básica
 
Clase n°1 java
Clase n°1 javaClase n°1 java
Clase n°1 java
 

Destacado

Reporte unidad3
Reporte unidad3Reporte unidad3
Reporte unidad3
Adrián Vega Segura
 
Reporte unidad5
Reporte unidad5Reporte unidad5
Reporte unidad5
Adrián Vega Segura
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativoKleo Jorgee
 
ITO TELECOMUNICACIONES U1
ITO TELECOMUNICACIONES U1ITO TELECOMUNICACIONES U1
ITO TELECOMUNICACIONES U1
Neomatrix Acevedo Maldonado
 
Reporte unidad1
Reporte unidad1Reporte unidad1
Reporte unidad1
Adrián Vega Segura
 
Mapa conceptual de codigo de lineas
Mapa conceptual de codigo de lineasMapa conceptual de codigo de lineas
Mapa conceptual de codigo de lineas
Fernando Luz
 
Unidad 2 principios electronicos y aplicaciones digitales (reporte)
Unidad 2 principios electronicos y aplicaciones digitales (reporte)Unidad 2 principios electronicos y aplicaciones digitales (reporte)
Unidad 2 principios electronicos y aplicaciones digitales (reporte)
Adrián Vega Segura
 
Practicas de Laboratorio Ingeniería de Las Telecomunicaciones
Practicas de Laboratorio Ingeniería de Las TelecomunicacionesPracticas de Laboratorio Ingeniería de Las Telecomunicaciones
Practicas de Laboratorio Ingeniería de Las Telecomunicacionesymmontillam
 
Mapa conceptual conversion analogico digital
Mapa  conceptual  conversion analogico digitalMapa  conceptual  conversion analogico digital
Mapa conceptual conversion analogico digital
Fernando Luz
 
2.medios de transmision
2.medios de transmision2.medios de transmision
Cuadro comparativo de modulaciones
Cuadro comparativo de modulacionesCuadro comparativo de modulaciones
Cuadro comparativo de modulaciones
Fernando Luz
 
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicosFundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
José Antonio Sandoval Acosta
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Rodolfo Alcantara Rosales
 
Conversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionConversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionLucre Castillo Lorenzo
 
Procesamiento digital de señales con matlab
Procesamiento digital de señales con matlabProcesamiento digital de señales con matlab
Procesamiento digital de señales con matlab
Percy Julio Chambi Pacco
 

Destacado (16)

Reporte unidad3
Reporte unidad3Reporte unidad3
Reporte unidad3
 
Reporte unidad5
Reporte unidad5Reporte unidad5
Reporte unidad5
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
ITO TELECOMUNICACIONES U1
ITO TELECOMUNICACIONES U1ITO TELECOMUNICACIONES U1
ITO TELECOMUNICACIONES U1
 
Reporte unidad1
Reporte unidad1Reporte unidad1
Reporte unidad1
 
Mapa conceptual de codigo de lineas
Mapa conceptual de codigo de lineasMapa conceptual de codigo de lineas
Mapa conceptual de codigo de lineas
 
Unidad 2 principios electronicos y aplicaciones digitales (reporte)
Unidad 2 principios electronicos y aplicaciones digitales (reporte)Unidad 2 principios electronicos y aplicaciones digitales (reporte)
Unidad 2 principios electronicos y aplicaciones digitales (reporte)
 
Practicas de Laboratorio Ingeniería de Las Telecomunicaciones
Practicas de Laboratorio Ingeniería de Las TelecomunicacionesPracticas de Laboratorio Ingeniería de Las Telecomunicaciones
Practicas de Laboratorio Ingeniería de Las Telecomunicaciones
 
Vantanas deslizantes
Vantanas deslizantesVantanas deslizantes
Vantanas deslizantes
 
Mapa conceptual conversion analogico digital
Mapa  conceptual  conversion analogico digitalMapa  conceptual  conversion analogico digital
Mapa conceptual conversion analogico digital
 
2.medios de transmision
2.medios de transmision2.medios de transmision
2.medios de transmision
 
Cuadro comparativo de modulaciones
Cuadro comparativo de modulacionesCuadro comparativo de modulaciones
Cuadro comparativo de modulaciones
 
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicosFundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
Fundamentos de Telecomunicaciones - Unidad 1 conceptos basicos
 
Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1Principios electricos y aplicaciones digitalesl sesion 1
Principios electricos y aplicaciones digitalesl sesion 1
 
Conversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacionConversion analogico digital: muestreo, cuantizacion y codificacion
Conversion analogico digital: muestreo, cuantizacion y codificacion
 
Procesamiento digital de señales con matlab
Procesamiento digital de señales con matlabProcesamiento digital de señales con matlab
Procesamiento digital de señales con matlab
 

Similar a Reporte unidad4

Unidad 4 isc j3 programacion concurrente CB
Unidad 4 isc j3 programacion concurrente CBUnidad 4 isc j3 programacion concurrente CB
Unidad 4 isc j3 programacion concurrente CB
Jhonatan Pat
 
Constructores & excepciones
Constructores & excepcionesConstructores & excepciones
Constructores & excepcionesJuan Mancilla
 
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Ivan Luis Jimenez
 
procesos
procesosprocesos
Guia4 java
Guia4 javaGuia4 java
Guia4 java
odelys2003
 
Programando en java
Programando en javaProgramando en java
Programando en javajulianbm60
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
Fernando Solis
 
Chap 15bpin
Chap 15bpinChap 15bpin
Chap 15bpin
Alvaro Pino
 
Informe tecnico unidad 2
Informe tecnico unidad 2Informe tecnico unidad 2
Informe tecnico unidad 2
Irving Che
 
Informetecnicou2 topicos
Informetecnicou2 topicosInformetecnicou2 topicos
Informetecnicou2 topicosKanddy Mobylml
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptos
mellcv
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
Soraya Lara
 
Progra final examen
Progra final examen Progra final examen
Progra final examen
JuanSimbaa8
 
Examen
Examen Examen
Herencia encapsulación polimorfismo
Herencia encapsulación polimorfismoHerencia encapsulación polimorfismo
Herencia encapsulación polimorfismo
Fernando Solis
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )
Soraya Lara
 
Metodos,variables, pasodeparametros
Metodos,variables, pasodeparametrosMetodos,variables, pasodeparametros
Metodos,variables, pasodeparametros
kenixxx
 
Practica 1 html_basico
Practica 1 html_basicoPractica 1 html_basico
Practica 1 html_basico
fanny casadiego
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisor
Soraya Lara
 

Similar a Reporte unidad4 (20)

Unidad 4 isc j3 programacion concurrente CB
Unidad 4 isc j3 programacion concurrente CBUnidad 4 isc j3 programacion concurrente CB
Unidad 4 isc j3 programacion concurrente CB
 
Constructores & excepciones
Constructores & excepcionesConstructores & excepciones
Constructores & excepciones
 
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEXProyecto de compiladores Sentencia While con Java CUP y JFLEX
Proyecto de compiladores Sentencia While con Java CUP y JFLEX
 
procesos
procesosprocesos
procesos
 
Guia4 java
Guia4 javaGuia4 java
Guia4 java
 
Programando en java
Programando en javaProgramando en java
Programando en java
 
Encapsulamiento
EncapsulamientoEncapsulamiento
Encapsulamiento
 
Chap 15bpin
Chap 15bpinChap 15bpin
Chap 15bpin
 
Informe tecnico unidad 2
Informe tecnico unidad 2Informe tecnico unidad 2
Informe tecnico unidad 2
 
Informetecnicou2 topicos
Informetecnicou2 topicosInformetecnicou2 topicos
Informetecnicou2 topicos
 
Lenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptosLenguaje de programacion java, conceptos
Lenguaje de programacion java, conceptos
 
Compilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y CupCompilador divisor de cantidades con Jflex y Cup
Compilador divisor de cantidades con Jflex y Cup
 
Progra final examen
Progra final examen Progra final examen
Progra final examen
 
Examen
Examen Examen
Examen
 
Herencia encapsulación polimorfismo
Herencia encapsulación polimorfismoHerencia encapsulación polimorfismo
Herencia encapsulación polimorfismo
 
Compilador (divisor de cantidades )
Compilador (divisor de cantidades )Compilador (divisor de cantidades )
Compilador (divisor de cantidades )
 
Lab3-POO
Lab3-POOLab3-POO
Lab3-POO
 
Metodos,variables, pasodeparametros
Metodos,variables, pasodeparametrosMetodos,variables, pasodeparametros
Metodos,variables, pasodeparametros
 
Practica 1 html_basico
Practica 1 html_basicoPractica 1 html_basico
Practica 1 html_basico
 
Informe compilador divisor
Informe compilador divisorInforme compilador divisor
Informe compilador divisor
 

Último

01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas
ivan848686
 
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
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
ssuserebb7f71
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
mirellamilagrosvf
 
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
 
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOLNORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
Pol Peña Quispe
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
DavidHunucoAlbornoz
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
arielemelec005
 
Bash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptxBash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptx
SantosCatalinoOrozco
 
OPEN_PIT.pdf..------asasasasasasasasasasasas
OPEN_PIT.pdf..------asasasasasasasasasasasasOPEN_PIT.pdf..------asasasasasasasasasasasas
OPEN_PIT.pdf..------asasasasasasasasasasasas
Eder288265
 
Medicina Peruana en el siglo XX y XXI- Julio Gabriel Pereda Sanchez.pptx
Medicina Peruana en el siglo XX y XXI- Julio Gabriel  Pereda Sanchez.pptxMedicina Peruana en el siglo XX y XXI- Julio Gabriel  Pereda Sanchez.pptx
Medicina Peruana en el siglo XX y XXI- Julio Gabriel Pereda Sanchez.pptx
gabrielperedasanchez
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
YoverOlivares
 
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptxTEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
maitecuba2006
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
DianaSG6
 
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
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
MariaCortezRuiz
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
JavierAlejosM
 
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptxMATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
Fernando Benavidez
 
Seguridad en mineria los Controles criticos
Seguridad en mineria los Controles criticosSeguridad en mineria los Controles criticos
Seguridad en mineria los Controles criticos
Melvin191754
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
ycalful01
 

Último (20)

01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas01-introduccion-a-la-perforacion.pdf de minas
01-introduccion-a-la-perforacion.pdf de minas
 
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
 
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaaEspecificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
Especificacioes tecnicas.pdfaaaaaaaaaaaaaaaaaaaaaaaaaaa
 
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDADPRESENTACION REUNION DEL COMITE DE SEGURIDAD
PRESENTACION REUNION DEL COMITE DE SEGURIDAD
 
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
 
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOLNORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
NORMATIVA AMERICANA ASME B30.5-2021 ESPAÑOL
 
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
14. DISEÑO LOSA ALIGERADA MOD G VOLADO.pdf
 
Distribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de MediasDistribución Muestral de Diferencia de Medias
Distribución Muestral de Diferencia de Medias
 
Bash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptxBash Script Programacion en la consola.pptx
Bash Script Programacion en la consola.pptx
 
OPEN_PIT.pdf..------asasasasasasasasasasasas
OPEN_PIT.pdf..------asasasasasasasasasasasasOPEN_PIT.pdf..------asasasasasasasasasasasas
OPEN_PIT.pdf..------asasasasasasasasasasasas
 
Medicina Peruana en el siglo XX y XXI- Julio Gabriel Pereda Sanchez.pptx
Medicina Peruana en el siglo XX y XXI- Julio Gabriel  Pereda Sanchez.pptxMedicina Peruana en el siglo XX y XXI- Julio Gabriel  Pereda Sanchez.pptx
Medicina Peruana en el siglo XX y XXI- Julio Gabriel Pereda Sanchez.pptx
 
Criterios de la primera y segunda derivada
Criterios de la primera y segunda derivadaCriterios de la primera y segunda derivada
Criterios de la primera y segunda derivada
 
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptxTEMA 11.  FLUIDOS-HIDROSTATICA.TEORIApptx
TEMA 11. FLUIDOS-HIDROSTATICA.TEORIApptx
 
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptxtema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
tema-6.4-calculo-de-la-potencia-requerida-para-transporte-de-solidos-.pptx
 
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
 
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdfPLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
PLAN DE TRABAJO DE REFUERZO ESCOLAR 2024.pdf
 
FISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdfFISICA_Hidrostatica_uyhHidrodinamica.pdf
FISICA_Hidrostatica_uyhHidrodinamica.pdf
 
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptxMATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
MATERIALES MAGNETICOS EN EL CAMPO SIDERURGICO.pptx
 
Seguridad en mineria los Controles criticos
Seguridad en mineria los Controles criticosSeguridad en mineria los Controles criticos
Seguridad en mineria los Controles criticos
 
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica químicaCiclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
Ciclo de Otto. Máquinas térmicas para el estudio de la termodinámica química
 

Reporte unidad4

  • 1. Instituto Tecnológico Superior de Felipe Carrillo Puerto Ingeniería en Sistemas Computacionales Materia: Tópicos Avanzados de Programación Docente: Dr. Niels Henryk Aranda Cuevas Reporte Técnico Unidad 4: Programación concurrente (multihilos) Integrantes: Chable Pat Jhonny Gabriel Balam Yam Wilberth Ayala Mutul Ezer Abizai Vega Segura Adrián Asís Poot Tuz Efraín Antonio Aké Pech Jorge Manuel Semestre: 4th Aula: J-3 Grupo: “a” Ciclo Escolar: Enero – Julio
  • 2. Unidad 4: Programación concurrente (multihilos) Fundamentos De Programación Concurrente • Un programa multihilo contiene dos o más partes que pueden ejecutarse de forma concurrente. Cada parte de ese programa se llama hilo (thread) y cada hilo establece un camino de ejecución independiente. Es un tipo de multitarea distinta a la multitarea por procesos, la cual ejecuta varios programas a la vez. En Java, es un solo programa con varios hilos a la vez. A continuación se iniciará el desarrollo de un ejemplo sencillo de hilos en java. 1. Ingresa a NetBeans y crea un proyecto tipo Java Application de la categoría Java. Nombre este proyecto como dskHilos. 2. Pulse sobre el nombre del proyecto dskHilos y en el menú de contexto que se muestra seleccione Java Package… de la opción Nuevo. Nombre esta carpeta Logica. 3. Repita el paso anterior y cree otro paquete denominado Fisica 4. Una vez creados los paquetes pulse con el botón derecho del mouse sobre el paquete Fisica y cree un objeto JFrame de nombre FormaHilos. 5. En JFrame creado insertar 4 tablas JTable, una en la parte superior donde se almacenan los resultados, y tres del mismo tamaño en la parte inferior. Cada tabla simulara valores expresados como movimientos de cada jugador. Ubica una serie de etiquetas y botones. Las tres etiquetas que aparecen debajo de los JTable se denominan lblJugador1, lblJugador2 y lblJugador3, respectivamente. Más debajo de éstas aparecen 3 botones de nombre: btnJugar, btnReinicioJuego y btnGenerarTabla. 6. Ahora proceda a crear las clases en el paquete Logica que permitirán el funcionamiento de los tres jugadores. Procede a crear la primera clase nómbrala clsJugador1. El código es el siguiente:
  • 3. Código: clsJugador1. package Logica; import javax.swing.JOptionPane; public class clsJugador1 extends Thread{ private int numero; private String nombre; private boolean continuar = true; //Constructor public clsJugador1() { numero = 1; //le asigna el numero 1 al jugador 1. nombre = JOptionPane.showInputDialog(null,"Digite el nombre del Jugador 1: "); } public int getNumero(){return numero;} //para devolver el número del jugador public String getNombre(){return nombre;} public Fisica.FormaHilos formHilo; //declara una variable de tipo FormaHilos public clsJugador1(Fisica.FormaHilos aThis) { //constructor que recibe formHilo = aThis; //defecto el formulario FormaHilos y lo asigna a formHilo. } public void detenerHilo() { //método para detener la ejecución del hilo. continuar = false; } @Override //se sobrescribe el método run @SuppressWarnings("SleepWhileInLoop") public void run() { while (continuar) { //hágase mientras continuar sea verdadero try { int avance = (int) (Math.random() * 4); //establece el avance de jugador 1 formHilo.moverJugador1(avance); //invoca al método moverJugador1 que se encuentra en el formulario FormaHilos continuar = formHilo.seguir; //para validar si se debe continuar. Thread.sleep(150); //descansa por 15 segundos... } catch (InterruptedException ex) { System.out.checkError(); } } } }
  • 4. Código: clsJugador2. package Logica; import javax.swing.JOptionPane; public class clsJugador2 extends Thread{ private int numero; private String nombre; private boolean continuar = true; public clsJugador2() { numero = 2; //le asigna el numero 2 al jugador 2. nombre = JOptionPane.showInputDialog(null,"Digite el nombre del Jugador 2."); } public int getNumero(){return numero;} //para devolver el numero del jugador public String getNombre(){return nombre;} public Fisica.FormaHilos formHilo; //declara una variable de tipo FormaHilos public clsJugador2(Fisica.FormaHilos aThis) { //constructor que recibe por formHilo = aThis; //defecto el formulario FormaHilos y lo asigna a formHilo. } public void detenerHilo(){ //método para detener la ejecución del hilo. continuar = false; } @Override //se sobrescribe el método run public void run() { while (continuar) { //hágase mientras continuar sea verdadero try { int avance = (int) (Math.random() * 4); //establece el avance de jugador 2 formHilo.moverJugador2(avance); //invoca al método moverJugador2 que se //encuentra en el formulario FormaHilos continuar = formHilo.seguir; //para validar si se debe continuar. Thread.sleep(150); //descansa por 15 segundos... } catch (InterruptedException ex) { } //Fin catch } //Fin try } //Fin método Run } //Fin de la clase
  • 5. Código: clsJugador3. package Logica; import javax.swing.JOptionPane; public class clsJugador3 extends Thread { private int numero; private String nombre; private boolean continuar = true; public clsJugador3() { numero = 3; //le asigna el numero 3 al jugador 3. nombre = JOptionPane.showInputDialog(null,"Digite el nombre del Jugador 3."); } public int getNumero(){return numero;} //para devolver el numero del jugador public String getNombre(){return nombre;} public Fisica.FormaHilos formHilo; //declara una variable de tipo FormaHilos public clsJugador3(Fisica.FormaHilos aThis) { //constructor que recibe por formHilo = aThis; //defecto el formulario FormaHilos y lo asigna a formHilo. } public void detenerHilo(){ //método para detener la ejecución del hilo. continuar = false; } @Override //se sobrescribe el método run public void run() { while (continuar) { //hágase mientras continuar sea verdadero try { int avance = (int) (Math.random() * 4); //establece el avance de jugador 1 formHilo.moverJugador3(avance); //invoca al método moverJugador3 que se //encuentra en el formulario FormaHilos continuar = formHilo.seguir; //para validar si se debe continuar. Thread.sleep(150); //descansa por 15 segundos... } catch (InterruptedException ex) { } //Fin catch } //Fin try } //Fin Run } //Fin clase
  • 6. Una vez que se ha escrito el código para las tres clases que procesarán a cada jugador, proceda a escribir el código que radicará en el formulario principal (FormaHilos.Java) Dicho código es el siguiente: package Fisica; import Logica.clsJugador1; import Logica.clsJugador2; import Logica.clsJugador3; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.table.DefaultTableModel; public class FormaHilos extends javax.swing.JFrame { javax.swing.table.DefaultTableModel modeloTabla = new javax.swing.table.DefaultTableModel(); javax.swing.table.DefaultTableModel modTablaJugador1 = new javax.swing.table.DefaultTableModel(); javax.swing.table.DefaultTableModel modTablaJugador2 = new javax.swing.table.DefaultTableModel(); javax.swing.table.DefaultTableModel modTablaJugador3 = new javax.swing.table.DefaultTableModel(); Object[] filas = new Object[24]; Object[] datosJugador1 = new Object[3]; //columnas celdaAvance, Object[] datosJugador2 = new Object[3]; Object[] datosJugador3 = new Object[3]; public Boolean seguir = true; int celdaJugador1=0; int celdaJugador2=0; int celdaJugador3=0; int p=0;int q=0; int m=0; //Se instancias las clases que están en otro paquete (Logica) clsJugador1 jug1 = new clsJugador1(); clsJugador2 jug2 = new clsJugador2(); clsJugador3 jug3 = new clsJugador3(); public FormaHilos() { initComponents(); //Creamos los componentas Tipo Etiqueta JLabel Nombre1=lblNombreJug1,Nombre2=lblNombreJug2,Nombre3=lblNombreJug3; cargarTabla(); //Creamos las etiquetas y le damos formato de fuente y tamaño Nombre1.setText("Jugador : "+jug1.getNombre().toUpperCase()); Nombre1.setFont(new java.awt.Font("Comic Sans MS", 0, 14)); Nombre2.setText("Jugador "+jug2.getNombre().toUpperCase()); Nombre2.setFont(new java.awt.Font("Comic Sans MS", 0, 14)); Nombre3.setText("Jugador : "+jug3.getNombre().toUpperCase()); Nombre3.setFont(new java.awt.Font("Comic Sans MS", 0, 14));
  • 7. } void cargarDetalle() { for (int i=0;i<24;i++){ filas[i]=0; } for(int x=1;x<=3;x++){ int numero = (int) (Math.random()*22+1); //para generar los numeros. filas[numero]= -1; } modeloTabla.addRow(filas); //carga el modelo con los datos obtenidos Tabla.setModel(modeloTabla); //carga el modelo en JTab //tabEmpleados } private void cargarTabla(){ for (int i=1;i<=24;i++){ modeloTabla.addColumn(String.valueOf(i)); } cargarDetalle(); } public void limpiarTabla(javax.swing.JTable miTabla) { DefaultTableModel modelo = (DefaultTableModel) miTabla.getModel(); while(modelo.getRowCount()>0) modelo.removeRow(0); celdaJugador1=0; celdaJugador2=0; celdaJugador3=0; seguir = true; } void confTablaJugadores(javax.swing.table.DefaultTableModel Modelo) { Modelo.addColumn("Celda Avance"); Modelo.addColumn("Contenido de la Celda"); Modelo.addColumn("Celda Actual"); } public void moverJugador1(int celda) { try{ celdaJugador1+=celda; if (celdaJugador1 >= 24 && seguir == true ) { celdaJugador1=24; seguir = false; JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador No."+String.valueOf(jug1.getNumero()) +", " + jug1.getNombre().toUpperCase()); } //aqui gana el jugador... if (celdaJugador1 <= 24) { Object valorCelda = Tabla.getValueAt(0,celdaJugador1); if ( "-1".equals(valorCelda.toString())) celdaJugador1 = 0; if (p == 0) {confTablaJugadores(this.modTablaJugador1);p=1;}
  • 8. datosJugador1[0]=String.valueOf(celda); datosJugador1[1]=valorCelda; datosJugador1[2]=celdaJugador1; modTablaJugador1.addRow(datosJugador1); tablaJugador1.setModel(modTablaJugador1); JLabel Jugad1=lblJugador1; Jugad1.setText("Interacciones: "+String.valueOf(modTablaJugador1.getRowCount())); Jugad1.setFont(new java.awt.Font("Comic Sans MS", 0, 14)); } } catch (Exception ex){ System.out.printf(ex.getMessage()); seguir = false; } } public void moverJugador2(int celda) { try{ celdaJugador2+=celda; if (celdaJugador2 >= 24 && seguir == true ) { celdaJugador2=24; seguir = false; JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador No."+String.valueOf(jug2.getNumero()) + ", " + jug2.getNombre().toUpperCase()); } //aqui gana el jugador... if (celdaJugador2 <= 24) { Object valorCelda = Tabla.getValueAt(0,celdaJugador2); if ( "-1".equals(valorCelda.toString())) celdaJugador2 = 0; if (q == 0) { confTablaJugadores(this.modTablaJugador2);q=1;} datosJugador2[0]=String.valueOf(celda); datosJugador2[1]=valorCelda; datosJugador2[2]=celdaJugador2; modTablaJugador2.addRow(datosJugador2); tablaJugador2.setModel(modTablaJugador2); JLabel Jugad2=lblJugador2; Jugad2.setText("Interacciones: "+String.valueOf(modTablaJugador2.getRowCount())); Jugad2.setFont(new java.awt.Font("Comic Sans MS", 0, 14)); } } catch (Exception ex){ System.out.printf(ex.getMessage()); seguir = false; } } public void moverJugador3(int celda) { try{ celdaJugador3+=celda; if (celdaJugador3 >= 24 && seguir == true ) {
  • 9. celdaJugador3=24; seguir = false; JOptionPane.showMessageDialog(null, "Juego Terminado...Ganó el Jugador No."+String.valueOf(jug3.getNumero()) + ", " + jug3.getNombre().toUpperCase()); } //aqui gana el jugador if (celdaJugador3 <= 24) { Object valorCelda = Tabla.getValueAt(0,celdaJugador3); if ( "-1".equals(valorCelda.toString())) celdaJugador3 = 0; if (m == 0) {confTablaJugadores(this.modTablaJugador3);m=1;} datosJugador3[0]=String.valueOf(celda); datosJugador3[1]=valorCelda; datosJugador3[2]=celdaJugador3; modTablaJugador3.addRow(datosJugador3); tablaJugador3.setModel(modTablaJugador3); JLabel Jugad3=lblJugador3; Jugad3.setText("Interacciones: "+String.valueOf(modTablaJugador3.getRowCount())); Jugad3.setFont(new java.awt.Font("Comic Sans MS", 0, 14)); } } catch (Exception ex) { System.out.printf(ex.getMessage()); seguir = false; } } Código botón btnReiniciarJuego private void btnReiniciarJuegoActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: limpiarTabla(this.tablaJugador1); limpiarTabla(this.tablaJugador2); limpiarTabla(this.tablaJugador3); btnJugar.setEnabled(true); btnReiniciarJuego.setEnabled(false); lblJugador1.setText("Interacciones: 0"); lblJugador2.setText("Interacciones: 0"); lblJugador3.setText("Interacciones: 0"); }
  • 10. Código botón btnGenerarTabla private void btnGenerarTablaActionPerformed(java.awt.event.ActionEvent evt){ // TODO add your handling code here: modeloTabla.removeRow(0); Tabla.setModel(modeloTabla); cargarDetalle(); } Código botón btnJugar private void btnJugarActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: clsJugador1 j1; j1 = new clsJugador1(this); clsJugador2 j2; j2 = new Logica.clsJugador2(this); clsJugador3 j3; j3 = new Logica.clsJugador3(this); j1.start(); j2.start(); j3.start(); if (seguir == false) { j1 = null; j2 = null; j3 = null; } btnJugar.setEnabled(false); btnReiniciarJuego.setEnabled(true); } public static void main(String args[]) { java.awt.EventQueue.invokeLater(new Runnable() { @Override public void run() { new FormaHilos().setVisible(true); } //Fin Run }); } //Fin Main
  • 11. CONCLUSIÓN BALAM YAM WILBERTH: En esta cuarta unidad abarcamos el tema de la programación en hilos o programación concurrente, que nos ayuda a que nuestro software realice varias tareas “Simultáneamente”. Y eso nos puede resolver varios problemas en el desarrollo de software. POOT TUZ EFRAIN ANTONIO En la unidad cuatro vimos lo que son los hilos los hilos en java son básicamente en forma para poder ejecutar varios procesos simultáneamente en nuestros programas en java para poder ver o crear los hilos tenemos que crear una clase Thread o reescribir el método principal “rum()”” el cual se va a ejecutar principalmente al inicial un hilo, Thread o un nuevo proceso en java. AYALA MUTUL EZER ABISAI En la unidad cuatro se desarrolló una aplicación de escritorio, donde se aplicó el funcionamiento de packages que vimos en la unidad anterior, igual vimos cómo aplicar como aplicar el funcionamiento de hilos esto nos ayudara al manejo de varias tareas simultaneas. AKE PECH JORGE MANUEL Aprendimos a hacer programación en hilos en la cual son procesos independientes en la cual se está ejecutando programas. Y eso nos ayuda mucho en el momento de desarrollar un software. CHABLE PAT JHONNY GABRIEL En esta unidad realizamos algunas prácticas con los multihilos y aprendimos que los hilos son un conjunto de acciones independientes que se activan durante la ejecución de un programa. Que son útiles cuando se necesitan realizar varias acciones a la vez de manera organizada sin afectar otras funciones en un programa. Lo mejor que hemos aprendido en esta unidad es saber implementar los hilos en nuestros programas, para realizar diferentes acciones determinadas. Y para finalizar, aprendimos a utilizar el código que se utiliza. VEGA SEGURA ADRIÁN ASÍS En esta unidad vimos lo que la programación concurrente y su utilidad en el software. Podemos decir que un programa multi hilo contiene dos o más partes que pueden ejecutarse de forma concurrente. El programa contiene hilos que viene siendo como caminos con su propio código. Se puede ejecutar paras hilos a la vez
  • 12. pero es muy diferente a los procesos porque los procesos son independientes y los hilos forman parte de un solo programa.