Java - Pausar y reanudar threads

   
Vista:

Pausar y reanudar threads

Publicado por Ivan (1 intervención) el 10/02/2016 07:46:17
Hola buenas noches ando haciendo una aplicacion sencilla de un cronometro, aun no la termino pero me tope con un asunto en cuanto los threads, solo tengo un hilo, lo que quiero es tener un boton de inicio, el cual ya lo tengo, y un boton para detener y lgo reiniciar la cuenta, que ya tengo, pero me falta un metodo para pausar y continuar el thread, ya intente con suspend y resume, pero estan obsoletos, en cuanto para detener la cuenta, use interrupt, pero no puedo volver a continuar la cuenta, espero alguien pueda ayudarme gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Pausar y reanudar threads

Publicado por Tom (912 intervenciones) el 10/02/2016 09:41:07
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alejandro

Pausar y reanudar threads

Publicado por Alejandro acronus2008@gmail.com (7 intervenciones) el 11/02/2016 18:05:46
Bueno amigo, no puedo ver tu código por eso me es difícil decirte que es lo que realmente te ayudaría.
Pero bueno hare un esfuerzo, tienes que ver un método de la case Thread que se llama Sleep, ese método se le pasa una cantidad determinada de milisegundos expresados en un numero entero positivo, ese método pone a dormir el hilo y espera a que termine el proceso consumidor o productor cualquiera sea el caso, también existe un método de esa clase que se llama Join que es para terminar la ejecución del hilo, aquí te muestro un ejemplo de como podría quedar, saludos, espero te sirva de algo.


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
void main(String[] args){
	.
	.
	.
	.
 
		Runnable r = new Runnable() {
		@Override
			public void run() {
 
				try {
 
					boolean stop = false;
					while (!stop) {
 
						String str = null;
						synchronized (cola) {
							str = cola.poll();
						}
						if (str != null) {
							boolean action = proccess(str);
							if (action)
								count++;
						} else if (!stopThreadExecution) {
							Thread.sleep(500);
						}
 
						if (stopThreadExecution)
							stop = true;
					}
 
				} catch (Exception ex) {
					throw new Exception(Arrays.toString(ex.getStackTrace()))
				}
 
			}
		};
	.
	.
	.
	.
	.
	//esto crea la cantidad de hilos que le pasas por parametro 
	//puedes tambien poner un solo hilo a trabajar
	List<Thread> threads = new LinkedList<Thread>();
	int cantHilos = Integer.valueOf(args[0]);
	for (int i = 0; i < cantHilos; i++) {
		Thread hilo = new Thread(rPersona);
		hilo.setName(String.format("P%s", String.valueOf(i)));
		threads.add(hilo);
		hilo.start();
	}
	.
	.
	.
	.
	//esperar a que se vacie la cola de procesos
	// Esperar a que se vacie la cola de persona
	while (!colaPersona.isEmpty())
		Thread.sleep(500);
	.
	.
	.
	.
	// Mandar a parar a los hilos Cosumidores de personas y esperar a  que terminen.
	stopThreadExecution = true;
	for (Thread hilo : threads) {
		hilo.join();
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar