Código de Java - Usando Runnable (Hilos)

Imágen de perfil
Val: 489
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Usando Runnable (Hilos)gráfica de visualizaciones


Java

estrellaestrellaestrellaestrellaestrella(1)
Publicado el 11 de Abril del 2018 por Rafael Angel
2.039 visualizaciones desde el 11 de Abril del 2018
Una demostracion simple del uso de Runnable para poder hacer una aplicasion con hilos.
Con los hilos se puede crear una aplicasion de prueba con clientes y compras, entonces unos procesos simularan clientes que compran en forma aleatoria y realizan registros.
Mientras que el usuario atiende las compras.
Pero tambien puede crear otro proceso o hilo para simular el proveedor de productos.

Requerimientos

NetBeans

1.0 incorrecto

Publicado el 11 de Abril del 2018gráfica de visualizaciones de la versión: 1.0 incorrecto
169 visualizaciones desde el 11 de Abril del 2018

1.0 corregido
estrellaestrellaestrellaestrellaestrella(1)

Publicado el 12 de Abril del 2018gráfica de visualizaciones de la versión: 1.0 corregido
1.871 visualizaciones desde el 12 de Abril del 2018
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
/*
Ejemplo simple del uso de Runnable.
 */
//package experimentos;
 
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
 
/**
 *
 * @author Rafael Angel Montero Fernández.
 */
public class RunnableMain {
 
    public static void main(String m[])
    {
        FormRunnable frmHilos=new FormRunnable();
    }//main
 
}//RunnableMain
 
abstract class MiRunnable implements Runnable
{
    private int contador=0;
    public abstract void ejecutando_hilos();
    private Thread vThread=null;//new Thread(this);
 
    public void inicio()
    {
        try
        {
            vThread=null;
            vThread=new Thread(this);
            vThread.start();
        }//try
        catch(Exception ex)
        {
            vThread.resume();
        }//catch
    }//inicio
 
    public void parar()
    {
        vThread.stop();
        //vThread=null;
        try
        {
        this.wait();}catch(Exception ex){vThread=null;}
    }//parar
 
    @Override
    public void run()
    {
        //while(true)
        {
            //System.out.println("Hola");
            this.ejecutando_hilos();
        }
    }//run
 
    /**
     * @return retorna el valor guardado en la variable contador.
     */
    public int getContador() {
        return contador;
    }
 
    /**
     * @param nuevo_contador parametro de entrada de numeros.
     */
    public void setContador(int nuevo_contador) {
        this.contador = nuevo_contador;
    }
 
}//MiRunnable
 
///////////////////////////////////////////////////////////////////////////////
 
@SuppressWarnings("serial")
class FormRunnable extends JFrame  implements ActionListener
{
 
    private JMenu jmArchivo=new JMenu("Archivo"), jmVer=new JMenu("Ver"), jmAcciones=new JMenu("Acciones");
    private JMenuItem jmiSalir=new JMenuItem("Salir"), jmiComenzar=new JMenuItem("Comnenzar"), jmiDetener=new JMenuItem("Detener"), jmiRealizar_otra_tarea=new JMenuItem("Realizar otra tarea");
    private JLabel jlDatos=new JLabel("Datos de los hilos.");
    private JTextArea jtaDatos=new JTextArea();
    private JScrollPane jspDatos;//=new JScrollPane();
    private JMenuBar jmbBarra=new JMenuBar();
    private String mDatos[]={"Rafael", "UCr", "Usando hilos para hacer aplicasiones paralelas", "San Ramon", "Sharkyc12@gmail.com", "Soy un triunfador", "Soy excitoso"};
 
    public FormRunnable()
    {
        super("Formulario Runnable");
        this.setSize(325, 370);
        this.setLayout(null);
        this.setResizable(false);
        this.setDefaultCloseOperation(3);
        jlDatos.setBounds(5, 0, 300,25);
        this.getContentPane().add(jlDatos);
        jtaDatos.setBounds(5, 30, 300,300);
        jspDatos=new JScrollPane(jtaDatos);
        jspDatos.setBounds(5, 30, 300, 300);
        this.getContentPane().add(jspDatos);
        jmbBarra.add(jmArchivo);
        jmArchivo.add(jmiSalir);
        jmbBarra.add(jmVer);
        jmbBarra.add(jmAcciones);
        jmAcciones.add(jmiComenzar);
        jmAcciones.add(jmiDetener);
        jmAcciones.add(jmiRealizar_otra_tarea);
        this.jmiRealizar_otra_tarea.addActionListener(this);
        this.jmiComenzar.addActionListener(this);
        this.jmiDetener.addActionListener(this);
        this.jmiSalir.addActionListener(this);
        this.setJMenuBar(jmbBarra);
        this.show();
    }//Constructor
 
    @Override
    public void actionPerformed(ActionEvent evt)
    {
        click_salir(evt);
        this.click_comenzar(evt);
        this.click_detener(evt);
        this.click_realizar_otra_tarea(evt);
    }//public void actionPerformed(ActionEvent evt)
 
    public void click_realizar_otra_tarea(ActionEvent evt)
    {
        if(evt.getActionCommand().equalsIgnoreCase(this.jmiRealizar_otra_tarea.getText())==true)
        {
            try
            {
             String msj=JOptionPane.showInputDialog(this, "Escriba cualquier informacion aqui.","Cualquier informacion");
            JOptionPane.showMessageDialog(this, msj);
            }catch(Exception ex){JOptionPane.showMessageDialog(null, "No escribió nada en el input.");
            }//Catch
        }
    }//click_realizar_otra_tarea
 
    public void click_detener(ActionEvent evt)
    {
        if(evt.getActionCommand().equalsIgnoreCase(jmiDetener.getText())==true)
        {
            this.detener();
 
        }
    }//click_detener
 
    public void click_comenzar(ActionEvent evt)
    {
        if(evt.getActionCommand().equalsIgnoreCase(jmiComenzar.getText())==true)
        {
 
            this.comenzar();
        }
    }//click_comenzar
 
    public void click_salir(ActionEvent evt)
    {
        if(evt.getActionCommand().equalsIgnoreCase(jmiSalir.getText())==true)
        {
            System.exit(0);
        }
    }//click_salir
 
 
    HiloRunnable hilo=new HiloRunnable();
    public void comenzar()
    {
        try
        {
            hilo.inicio();//Cuando se ejecuta por primera vez.
        }
        catch(Exception ex)
        {
            //hilo;//Ha sido detenido o suspendido y entonces se resume o se continua con el hilo.
        }
    }//comenzar
 
    public void detener()
    {
        try
        {
            hilo.parar();//Mejor se suspende. Es mejor que stop o sea mejor que detenerlo.
        }//try
        catch(Exception ex)
        {
            JOptionPane.showMessageDialog(this, ex.getMessage());
        }//catch
    }//detener
 
    public class HiloRunnable extends MiRunnable
    {
 
        private Aleatorios rnd=new Aleatorios(mDatos.length-1);
        public HiloRunnable()
        {
 
        }//Constructor
 
        @Override
        public void ejecutando_hilos() {
            //throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.
 
            try
            {
                while(true)
                {
                    rnd.setAleatorios();
                    //this.setContador(getContador()+1);
                    jtaDatos.setText(jtaDatos.getText() + mDatos[rnd.getAleatorios()]+ "\n");
                    //if(getContador()>=mDatos.length-1)
                    {
                        //this.parar();
                    }//if
 
                }//while
            }
            catch(Exception ex)
            {
                System.out.println("Error");
            }
        }//hilos_de_ejecusion
 
    }//Mi_hilo
 
}//HiloRunnable
 
class Aleatorios
{
    private int numero_aleatorio=0, vMax=0;
 
    public Aleatorios(int max)
    {
        vMax=max;
        //this.inicio();
    }//Aleatorios
 
 
    public void setAleatorios() {
        //for(int i=0;i<12;i++)
        //while(true)
        {
            numero_aleatorio=(int) (Math.random()*vMax)+1;//Se generan numeros aleatorios constantemente
            System.out.println(this.numero_aleatorio);
        }//while
    }//hilos_de_ejecusion
 
    public int getAleatorios()
    {
        return numero_aleatorio;
    }//    public int generar_aleatorio(int max)
 
}//Aleatorios



Comentarios sobre la versión: 1.0 corregido (1)

Imágen de perfil
24 de Abril del 2019
estrellaestrellaestrellaestrellaestrella
buenas noches, tengo una pregunta, es que me dejaron como un trabajo final de unidad un programa sobre hilos pero con gráficos.

según tengo que crear 5 cajas de manera gráfica, con "n" clientes que aparezcan y se vayan formando uno tras otro en cada una de las cajas, pero las cajas también tienen un botón que sea que la caja se cierre y también se pueda abrir de nuevo.

las cajas están abiertas para que aparezcan los clientes en distintos tiempos y se formen uno tras otro en cada fila, pero si en ese mismo momento se desactiva algunas de las cajas, que los clientes se queden esperando en esa misma caja que se desactivo, hasta que se vuelva a activar para seguir atendiéndolos.

la verdad no se como hacer eso de manera gráfica, dicen que son con hilos, pero no le encuentro forma de meterle los gráficos para que se vean todas esas acciones.

alguien me podría ayudar con eso?, sobre eso de los hilos que se tengan que utilizar aquí?, según me dijeron que se utiliza el executorservice para eso, pero no se si esta bien o sea otra cosa?
Responder

Comentar la versión: 1.0 corregido

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s4543
Revisar política de publicidad