Informe tecnico unidad 4
Upcoming SlideShare
Loading in...5
×
 

Informe tecnico unidad 4

on

  • 298 views

informe

informe

Statistics

Views

Total Views
298
Views on SlideShare
298
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft Word

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Informe tecnico unidad 4 Informe tecnico unidad 4 Document Transcript

  • 1 Instituto Tecnológico Superior de Felipe Carrillo Puerto Informe Técnico de la unidad 4 Ingeniería en sistemas computacionales Tópicos Avanzados de programación Unidad 4. Programación concurrente. Realizado por Ángel Felipe Suaste Tuz Carla Balam Méndez Bella Areli Perez Gomez Miriam Candelaria Poot Pech Irving Saul Che Canul Luis Antonio Chan Chuc
  • 2 Proyecto multihilos llamado AppHilos Código de la FormaHilos Código clase Jugador 1 Código clase Jugador 2 Código clase Jugador 3 Conclusiones Conclusión Angel Felipe Suaste Tuz Conclusión Carla Balam Méndez Conclusión Bella Areli Perez Gomez Conclusión Miriam Candelaria Poot Pech Conclusión Irving Saul Che Canul Conclusión Luis Antonio Chan Chuc Conclusión general Conclusión general
  • 3 Proyecto multihilos llamado AppHilos Código de la FormaHilos package Fisica; //paquete de la clase import Logica.clsJugador1; //importamos la clase del jugador 1 import Logica.clsJugador2; //importamos la clase del jugador 2 import Logica.clsJugador3; //importamos la clase del jugador 3 import javax.swing.JOptionPane; //importamos la clase JOptionaPane import javax.swing.table.DefaultTableModel; //importamos la clase TableModel public class FormaHilos extends javax.swing.JFrame { //inicia la clase FormaHilos, subclase de JFrame javax.swing.table.DefaultTableModel modeloTabla = new javax.swing.table.DefaultTableModel(); //creamos un objeto de TableModel javax.swing.table.DefaultTableModel modTablaP1= new javax.swing.table.DefaultTableModel(); //creamos una tabla para el jugador 1, de tipo TableModel javax.swing.table.DefaultTableModel modTablaP2= new javax.swing.table.DefaultTableModel(); //creamos una tabla para el jugador 2, de tipo TableModel javax.swing.table.DefaultTableModel modTablaP3= new javax.swing.table.DefaultTableModel(); //creamos una tabla para el jugador 3, de tipo TableModel Object[]filas = new Object[24]; //creamos un arreglo de tipo Object, que tiene un tamaño de 24, que es la tabla que se ve al inicio del programa. Object [] datosJugador1 = new Object[3]; //creamos un arreglo de tipo Object, que tiene un tamaño de 3, para el jugador 1 Object [] datosJugador2 = new Object[3]; //creamos un arreglo de tipo Object, que tiene un tamaño de 3, para el jugador 2 Object [] datosJugador3 = new Object[3]; //creamos un arreglo de tipo Object, que tiene un tamaño de 3, para el jugador 3 public Boolean seguir = true; //varible tipo boolean
  • 4 //variables tipo entero que iniciamos con ceros, para cada jugador int celdaJugador1=0; int celdaJugador2=0; int celdaJugador3=0; //variables tipo entero que iniciamos con ceros int p=0; int q=0; int m=0; //instanciamos tres objetos un objeto por cada clase, previamente importando clsJugador1 jug1 = new clsJugador1(); clsJugador2 jug2 = new clsJugador2(); clsJugador3 jug3 = new clsJugador3(); public FormaHilos() { //inicio del constructor de la clase //como vemos este constructor, va a servir que cuando se ejecute el proyecto cargue //el metodo cargarTabla() y los tres labels. initComponents(); cargarTabla(); jLabel1.setText("Jugador: " + jug1.getNombre().toUpperCase()); jLabel2.setText("Jugador: " + jug2.getNombre().toUpperCase()); jLabel3.setText("Jugador: " + jug3.getNombre().toUpperCase()); }//fin del constructor void cargarDetalle(){ //inicio del método cargarDetalle //el siguiente for agrega ceros a la tabla de 24 columnas. for (int i = 0; i<24; i++){ filas [i]=0; } //fin for1 //este otro for hace que de forma aleatoria la tabla de 24 columnas tenga un -1 segun el numero aleatorio que caiga. for (int x = 1; x<=3; x++){ int numero = (int ) (Math.random()*22+1); filas[numero]=-1; modeloTabla.addRow(filas); tabla.setModel(modeloTabla);
  • 5 }//fin for 2 } //fin del metodo cargarDetalle() void cargarTabla(){ //inicio metodo cargarTabla() for (int i = 1;i<=24;i++){ modeloTabla.addColumn(String.valueOf(i)); } cargarDetalle(); //llamar metodo cargarDetalle() }//fin del metodo cargarTabla() @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); tabla = new javax.swing.JTable(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); jLabel3 = new javax.swing.JLabel(); jScrollPane4 = new javax.swing.JScrollPane(); tablePlayer1 = new javax.swing.JTable(); jScrollPane6 = new javax.swing.JScrollPane(); tablePlayer3 = new javax.swing.JTable(); jScrollPane7 = new javax.swing.JScrollPane(); tablePlayer2 = new javax.swing.JTable(); btnRestart = new javax.swing.JButton(); btnGenerar = new javax.swing.JButton(); lblp2 = new javax.swing.JLabel(); lblp3 = new javax.swing.JLabel(); lblp1 = new javax.swing.JLabel(); btnPlay = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); tabla.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null}, {null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null} },
  • 6 new String [] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24" } )); jScrollPane1.setViewportView(tabla); //poniendole texto a los labels jLabel1.setText("Jugador 1"); jLabel2.setText("Jugador 2"); jLabel3.setText("Jugador 3"); tablePlayer1.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null} }, new String [] { //texto de las columnas de la tabla del jugador 1 "Celda Avance", "Contenido Celda", "Celda Actual" } )); jScrollPane4.setViewportView(tablePlayer1); tablePlayer3.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null} }, new String [] { //texto de las columnas de la tabla del jugador 2 "Celda Avance", "Contenido Celda", "Celda Actual" } )); jScrollPane6.setViewportView(tablePlayer3); tablePlayer2.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { {null, null, null} }, new String [] { //texto de las columnas de la tabla del jugador 3 "Celda Avance", "Contenido Celda", "Celda Actual" }
  • 7 )); jScrollPane7.setViewportView(tablePlayer2); btnRestart.setText("Restart Game"); //texto del boton btnRestart.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnRestartActionPerformed(evt); } }); btnGenerar.setText("Generar"); //texto del boton btnGenerar.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnGenerarActionPerformed(evt); } }); //texto de las etiquetas lblp2.setText("Interracciones: 0"); lblp3.setText("Interracciones: 0"); lblp1.setText("Interracciones: 0"); btnPlay.setText("Play"); //texto del boton, despues de aqui todo el código es generado por el editor btnPlay.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btnPlayActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addGap(110, 110, 110) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jLabel2) .addGap(244, 244, 244) .addComponent(jLabel3)
  • 8 .addGap(138, 138, 138)) .addGroup(layout.createSequentialGroup() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 344, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(lblp2) .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 344, javax.swing.GroupLayout.PREFERRED_SIZE))) .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(btnPlay) .addGap(62, 62, 62) .addComponent(btnRestart) .addGap(152, 152, 152) .addComponent(btnGenerar)) .addComponent(lblp1)))) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 344, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(lblp3)) .addContainerGap(245, Short.MAX_VALUE)) .addComponent(jScrollPane1) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 125, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel1)
  • 9 .addComponent(jLabel3)) .addComponent(jLabel2, javax.swing.GroupLayout.Alignment.TRAILING)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jScrollPane7, javax.swing.GroupLayout.PREFERRED_SIZE, 323, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane6, javax.swing.GroupLayout.PREFERRED_SIZE, 323, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jScrollPane4, javax.swing.GroupLayout.PREFERRED_SIZE, 323, javax.swing.GroupLayout.PREFERRED_SIZE)) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(lblp1) .addComponent(lblp2) .addComponent(lblp3)) .addGap(29, 29, 29) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(btnRestart) .addComponent(btnGenerar) .addComponent(btnPlay)) .addContainerGap()) ); pack(); }// </editor-fold> private void btnRestartActionPerformed(java.awt.event.ActionEvent evt) { //este método deja en blanco las tablas de los jugadores al presionar el botón restart, asimismo habilita el boton play y deshabilita este mismo botón después de que hace su cometido limpiarTabla(this.tablePlayer1); limpiarTabla(this.tablePlayer2); limpiarTabla(this.tablePlayer3); btnPlay.setEnabled(true); btnRestart.setEnabled(false); lblp1.setText("Interacciones: 0"); lblp2.setText("Interacciones: 0"); lblp3.setText("Interacciones: 0");
  • 10 } private void btnPlayActionPerformed(java.awt.event.ActionEvent evt) { //este es el metodo del boton play, como vemos se instancian tres objetos de las clases jugador1, jugador2 y jugador3. Seguidamente vemos como llamamos a los métodos start() para cada objeto. 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; } //aqui se deshabilita el boton de play despues de ejecutarse una vez btnPlay.setEnabled(false); //aqui se habilita el boton de Restar despues de ejecutarse el evento del boton Play btnRestart.setEnabled(true); } private void btnGenerarActionPerformed(java.awt.event.ActionEvent evt) { modeloTabla.removeRow(0); tabla.setModel(modeloTabla); cargarDetalle(); } //con este metodo hacemos que las tablas se limpien 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;
  • 11 seguir = true; } public void moverJugador1 (int celda) { try{ //el siguiente if determina si el jugador 1, ha llegado a 24; en caso de ser verdadero, hace que la celda del jugador1 sea igual a 24 y seguir se vuelve false, para que se deje de ejecutar y ademas imprime que el jugador uno ha ganado 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()); } //este otro if es en caso de que el jugador 1 aún no ha llegado a 24, como vemos este if tiene if’s anidados if (celdaJugador1<=24){ Object valorCelda = tabla.getValueAt(0,celdaJugador1); //este if determina si el valor es -1 de la celda, de ser asi toma el valor de 0 if ("-1".equals(valorCelda.toString())) celdaJugador1=0; if (p==0) { confTablaJugadores(this.modTablaP1); p=1; } datosJugador1[0]=String.valueOf(celda); datosJugador1[1]=valorCelda; datosJugador1[2]=celdaJugador1; modTablaP1.addRow(datosJugador1); tablePlayer1.setModel(modTablaP1); lblp1.setText("interacciones: " + String.valueOf(modTablaP1.getRowCount())); } }catch (Exception ex){ seguir = false; }
  • 12 } public void moverJugador2 (int celda){ try { celdaJugador2+=celda; //el siguiente if determina si el jugador 2, ha llegado a 24; en caso de ser verdadero, hace que la celda del jugador2 sea igual a 24 y seguir se vuelve false, para que se deje de ejecutar y ademas imprime que el jugador dos ha ganado if (celdaJugador2>=24 && seguir ==true){ celdaJugador2=24; seguir =false; JOptionPane.showMessageDialog(null, "Juego Terminado... Ganó el juagador No. " + String.valueOf(jug2.getNumero()) + ", " + jug2.getNombre().toUpperCase()); } ←//aqui gana el player 2 //este otro if es en caso de que el jugador 1 aún no ha llegado a 24, como vemos este if tiene if’s anidados→ if (celdaJugador2<=24){ Object valorCelda = tabla.getValueAt(0, celdaJugador2); //este if determina si el valor es -1 de la celda, de ser asi toma el valor de 0 if ("-1".equals(valorCelda.toString())) celdaJugador2=0; if (q==0){ confTablaJugadores(this.modTablaP2); q=1; } datosJugador2[0]=String.valueOf(celda); datosJugador2[1]=valorCelda; datosJugador2[2]=celdaJugador2; modTablaP2.addRow(datosJugador2); tablePlayer2.setModel(modTablaP2); lblp2.setText("interacciones:" + String.valueOf(modTablaP2.getRowCount())); } }catch (Exception ex){ seguir = false; } }
  • 13 public void moverJugador3 ( int celda){ try{ celdaJugador3+=celda; //el siguiente if determina si el jugador 2, ha llegado a 24; en caso de ser verdadero, hace que la celda del jugador2 sea igual a 24 y seguir se vuelve false, para que se deje de ejecutar y ademas imprime que el jugador dos ha ganado if(celdaJugador3>=24&& seguir ==true){ celdaJugador3=24; seguir =false; JOptionPane.showMessageDialog(null, "Juego Terminado... Ganó el juagador No. " + String.valueOf(jug3.getNumero()) + ", " + jug3.getNombre().toUpperCase()); }//gana jugador 3 //este otro if es en caso de que el jugador 3 aún no ha llegado a 24, como vemos este if tiene if’s anidados→ if (celdaJugador3<=24){ Object valorCelda=tabla.getValueAt(0, celdaJugador3); if ("-1".equals(valorCelda.toString())) celdaJugador3=0; if (m==0){ confTablaJugadores(this.modTablaP3); m=1; } datosJugador3[0]=String.valueOf(celda); datosJugador3[1]=valorCelda; datosJugador3[2]=celdaJugador3; modTablaP3.addRow(datosJugador3); tablePlayer3.setModel(modTablaP3); lblp3.setText("Interacciones: " + String.valueOf(modTablaP3.getRowCount())); } } catch (Exception ex){ seguir = false; } } void confTablaJugadores(javax.swing.table.DefaultTableModel Modelo){ Modelo.addColumn("Celda Avance");
  • 14 Modelo.addColumn("Contenido celda"); Modelo.addColumn("Celda actual"); } /** * @param args the command line arguments */ public static void main(String args[]) { /* Set the Nimbus look and feel */ //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html */ try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(FormaHilos.class.getName()).log(java.util.logging.Level.SEV ERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(FormaHilos.class.getName()).log(java.util.logging.Level.SEV ERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(FormaHilos.class.getName()).log(java.util.logging.Level.SEV ERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(FormaHilos.class.getName()).log(java.util.logging.Level.SEV ERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new FormaHilos().setVisible(true);
  • 15 } }); } // Variables declaration - do not modify private javax.swing.JButton btnGenerar; private javax.swing.JButton btnPlay; private javax.swing.JButton btnRestart; private javax.swing.JLabel jLabel1; private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel3; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane4; private javax.swing.JScrollPane jScrollPane6; private javax.swing.JScrollPane jScrollPane7; private javax.swing.JLabel lblp1; private javax.swing.JLabel lblp2; private javax.swing.JLabel lblp3; private javax.swing.JTable tabla; private javax.swing.JTable tablePlayer1; private javax.swing.JTable tablePlayer2; private javax.swing.JTable tablePlayer3; // End of variables declaration }
  • 16 Código clase Jugador 1 package Logica; //paquete de la clase import javax.swing.JOptionPane; //se importa la clase JOptionPane public class clsJugador1 extends Thread{ //inicia la clase que hereda de clase Thread private int numero; private String nombre; //sera el nombre del jugador private boolean continuar=true; //variable tipo boolean public clsJugador1(){ //constructor //este constructor es el que lee el nombre del jugador 1 numero=1; nombre= JOptionPane.showInputDialog("Digite el nombre del jugador1 "); } //fin constructor public int getNumero(){ //método que recibe y retorna número return numero; } public String getNombre(){ //método que recibe y retorna el nombre introducido return nombre; } public Fisica.FormaHilos formHilo; //creamos objeto tipo formHilos public clsJugador1(Fisica.FormaHilos aThis){ formHilo = aThis; } public void detenerHilo (){ //método que detiene la ejecución de esta clase. continuar=false; } public void run(){ //metodo run de Thread while (continuar){ //aqui mientras continuar sea true se ejecuta: try{ //esto es una excepción int avance = (int)(Math.random()*4); formHilo.moverJugador1(avance);
  • 17 continuar = formHilo.seguir; Thread.sleep(150); }catch(InterruptedException ex){ } } } } Código clase Jugador 2 //el siguiente código es igual que la del jugador 1 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; nombre= JOptionPane.showInputDialog("Digite el nombre del jugador2 "); } public int getNumero(){ return numero; } public String getNombre(){ return nombre; } public Fisica.FormaHilos formHilo; public clsJugador2(Fisica.FormaHilos aThis){ formHilo = aThis;
  • 18 } public void detenerHilo (){ continuar=false; } //override public void run(){ while (continuar){ try{ int avance = (int)(Math.random()*4); formHilo.moverJugador2(avance); continuar = formHilo.seguir; Thread.sleep(150); }catch(InterruptedException ex){ } } } }
  • 19 Código clase Jugador 3 //igual que la del jugador 1 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; nombre= JOptionPane.showInputDialog("Digite el nombre del jugador 3"); } public int getNumero(){ return numero; } public String getNombre(){ return nombre; } public Fisica.FormaHilos formHilo; public clsJugador3(Fisica.FormaHilos aThis){ formHilo = aThis; } public void detenerHilo (){ continuar=false; } public void run(){ while (continuar){ try{
  • 20 int avance = (int)(Math.random()*4); formHilo.moverJugador3(avance); continuar = formHilo.seguir; Thread.sleep(150); }catch(InterruptedException ex){ } } } }
  • 21 Conclusiones Conclusión Angel Felipe Suaste Tuz En el paquete Lógica se tienen tres clases, las cuales son las clases de los jugadores 1, 2 y 3, en esas se lee nombres del jugador y su número. En el otro paquete Física se tiene la clase que une a las otras 3 clases de jugadores, es en esta clase llama FormaHilos que se programa el entorno de la aplicación y allí se codifica prácticamente todo el juego. Fue necesario utilizar varios métodos, para darle vida al proyecto entre los métodos utilizados están los método start y sleep, propios de la clase Thread. Conclusión Carla Balam Méndez Este programa se trata de unos jugadores.el tema de esta unidad son los hilos. utilizamos algunos métodos de hilos que son: stop():Este método provoca que el hilo se detenga de manera inmediata. suspend(): El método suspend() es distinto de stop(). suspend() toma el hilo y provoca que se detenga su ejecución sin destruir el hilo de sistema subyacente, ni el estado del hilo anteriormente en ejecución. resume():El método resume() se utiliza para revivir un hilo suspendido. como en otros programas manejamos e importamos paquetes, utilizamos constructores, métodos y objetos. en la creación de las tablas manejamos componentes como botones,cajas de texto, etc. Conclusión Bella Areli Perez Gomez Conclusión Miriam Candelaria Poot Pech Conclusión Irving Saul Che Canul Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria. La pequeña aplicación permite interactuar a dos jugadores unas serias secuencias que se ejecutan para permitir interactuar las clases y métodos creados. La creación de métodos y la utilización de los mismo son quienes le dan vida al juego para poder interactuar con usuarios definidos por nombre y números de intensidad, stop():ejecuta la orden para que el hilo se detenga en la posición donde ese encuentre
  • 22 suspend():toma el hilo y provoca que se detenga su ejecución sin destruir el hilo, esto significa que no afecta los demás procesos solo la instancia en donde se encuentre resume():este método es usado para reiniciar o reactivar los procesos ya detenidos start(): es usado para iniciar los procesos sleep():se usa para pausar o inhabilitar el proceso y el usuario determina en que momento activarlo de nuevo Conclusión Luis Antonio Chan Chuc En este programa de tres jugadores, utilizamos lo que son los hilos, estos son definidos ya sea por programador o por el usuario un hilo es cada uno de los flujos secuenciales de control en el programa. Para ello fue necesario utilizar los métodos Resume (reactiva un hilo suspendido), Stop (detiene el hilo inmediatamente), Suspend (suspende el hilo), se retoma otra vez la interfaz gráfica. Al igual se implementó métodos tales como string, sleep, en fin el uso de los métodos es muy necesario. Conclusión general
  • 23 En esta unidad aprendimos a manejar hilos. los hilos son definidos por el usuario o por el programador, son procesos a los que el programador define un comportamiento e inicia en un momento específico. para la creación de este programa como en los programas anteriores se importaron paquetes, utilizamos constructores y métodos para operaciones. el programa se trato de unos jugadores. Para la programación de hilos, se tienen métodos que son propio de los hilos, ejemplos de métodos principales de un hilo (thread)son: stop(): este método provoca que el hilo se detenga de manera inmediata. suspend(): el método suspend() es distinto de stop(). suspend() toma el hilo y provoca que se detenga su ejecución sin destruir el hilo de sistema subyacente, ni el estado del hilo anteriormente en ejecución. resume() :el método resume() se utiliza para revivir un hilo suspendido. setPriority( int ): el método setPriority() asigna al hilo la prioridad indicada por el valor pasado como parámetro. getPriority(): este método devuelve la prioridad del hilo de ejecución en curso, que es un valor comprendido entre uno y diez. setName( String ): este método permite identificar al hilo con un nombre nemónico. De esta manera se facilita la depuración de programas multihilo. getName(): este método devuelve el valor actual, de tipo cadena, asignado como nombre al hilo en ejecución mediante setName(). Cuando un programa java comienza su ejecución, ya hay un hilo ejecutándose, a este hilo se le denomina normalmente hilo principal del programa, porque es el único que se ejecuta al comenzar el programa. Este hilo principal es importante por dos razones: • Es el hilo a partir del cual se crean el resto de los hilos del programa. • Normalmente, debe ser el último que finaliza su ejecución, ya que cuando el hilo principal finaliza, el programa termina. Aunque el hilo principal se crea automáticamente cuando el programa comienza, se puede controlar a través de un objeto Thread. Para ello se debe de obtener una referencia al mismo llamando al método currentThread( ), que es un miembro public static de Thread. Su forma general es la siguiente : currentThread( ) es miembro de Thread que permite obtener el hilo actual. Thread t = Thread.currentThread( );