elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Problema con hilos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con hilos  (Leído 2,148 veces)
SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Problema con hilos
« en: 28 Noviembre 2013, 16:47 pm »

Hola a todos, planteo mi problema.

Tengo un hilo A. Desde éste creo otro hilo B (hijo de A por tanto).
El hilo B lee datos de teclado, por tanto está bloqueado esperando a que alguien teclee algo. (*1)
Entonces el hilo A quiere terminar la ejecución del hilo B (estando este bloqueado, esperando a que alguien teclee)

¿Como puede A terminar la ejecución de B?

Muchas gracias.

(*1) Es decir, está en el punto "String s=sc.nestLine()" con sc=new Scanner(System.in)


En línea

SARGE553413

Desconectado Desconectado

Mensajes: 176


Ver Perfil
Re: Problema con hilos
« Respuesta #1 en: 28 Noviembre 2013, 16:48 pm »

He creado un fragmento de código de ejemplo con lo que me gustaría hacer
Código:
public static void main(String[] args) {
final Scanner sc=new Scanner(System.in);
Thread th1=new Thread(new Runnable(){
private Scanner sct=sc;
public void run(){
try {
String s="a";
while(! s.equals("")){
System.out.println("escribe: ");
s=sct.nextLine();
System.out.println(s);
}
} catch (Exception e) {
// TODO Auto-generated catch block
}
}
});
th1.start();

try {
System.out.println("duermo para dar tiempo al hilo hijo a hacer el"
+ "sc.nextLine()");
Thread.currentThread().sleep(2000);
//terminar ejecución del hilo B !!!¿¿¿Como?????¡¡¡¡
} catch (InterruptedException e) {
e.printStackTrace();
}
}

Como véis le he intentado pasar el Scanner desde el main del hilo A al hilo B , para cerrarlo posteriormente, pero tampoco eso se puede.


En línea

Leyer


Desconectado Desconectado

Mensajes: 786


leyer@elhacker.net


Ver Perfil WWW
Re: Problema con hilos
« Respuesta #2 en: 11 Diciembre 2013, 05:58 am »

Existe la clase BufferedReader la cual contiene un método que te permite saber cuando está listo el flujo para lectura.

Código
  1. bufferedReader.ready();

Example:
Código
  1. while(running){
  2. try {
  3. if(reader.ready()){
  4. String textString=reader.readLine();
  5. System.out.println(textString);
  6. }
  7. } catch (IOException e) {
  8. e.printStackTrace();
  9. }
  10. }
Donde running sera tu variable booleana que determinara si el hilo continua o no su ejecución.

en el hilo defines un metodo para detenerlo

Código
  1. public void _stop(){
  2. running=false;
  3. }
  4.  

y pasado el  lapso de tiempo que quieres llamas a este método y el hilo detendrá su ejecución

espero te sirva
un saludo.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Más información en los hilos.
Sugerencias y dudas sobre el Foro
oklopo 1 2,245 Último mensaje 2 Mayo 2004, 00:20 am
por [[SpAwN]]
Hilos en C
Programación C/C++
mapers 2 6,372 Último mensaje 13 Junio 2011, 10:21 am
por mapers
Problema con Hilos (C++)
Programación C/C++
carbon1 3 2,510 Último mensaje 8 Abril 2012, 22:24 pm
por Proteus1989
Hilos C « 1 2 »
Programación C/C++
<<<-Basura->>> 10 6,163 Último mensaje 27 Febrero 2013, 17:53 pm
por <<<-Basura->>>
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines