PDA

View Full Version : [Java] Thread: questo Clock non vuole fermarsi!


luxorl
28-11-2006, 10:34
Ciao, ho cominciato a studiare per l'esame di sistemi operativi e sulle dispense dell'esercitatore del corso c'è un programmino che dovrebbe dimostrare come fermare un Thread ciclico con Interrupted()... Io l'ho provato questo programma, e sembra proprio non funzionare... il Clock continua a stampare secondi! Vedete se capite dove sta il problema please!


import poo.inout.*; //piccolo package per usare Console.readString()

class Clock extends Thread{
public void run(){
int i=1;
while(!isInterrupted()){

try{
sleep(1000);
}catch(InterruptedException e){
break;
}

System.out.println(i);
i++;
}
}
}

class ClockController extends Thread{
private Clock c;

public ClockController(Clock c){
this.c=c;
}

public void run(){
Console.readString("PRESS ENTER TO START"); //Resta in attesa di INVIO
c.start();
Console.readString("PRESS ENTER TO STOP");
c.interrupted();
}
}

public class ClockTest{
public static void main(String args[]){
Clock c=new Clock();
ClockController cc=new ClockController(c);
cc.start();
}
}



:mano:

andbin
28-11-2006, 10:45
public void run(){
Console.readString("PRESS ENTER TO START"); //Resta in attesa di INVIO
c.start();
Console.readString("PRESS ENTER TO STOP");
c.interrupted();
}interrupted() è un metodo che ritorna un boolean e testa solo se il thread è stato interrotto!! ---> c.interrupt()

luxorl
28-11-2006, 10:54
interrupted() è un metodo che ritorna un boolean e testa solo se il thread è stato interrotto!! ---> c.interrupt()

:muro:



Grazie ;)

ally
28-11-2006, 18:43
...se vuoi un ticker ti consiglio di implementare il Timeable...


public class TimerTest implements Timeable {

public TimerTest(){

Timer ticker = new Timer(this,1000);
ticker.cont();

}


public static void main(String[] args) {

new TimerTest();

}

public void tick(Timer t) {

System.out.println("Tick! " +System.currentTimeMillis());

}


}


...ciao...

luxorl
28-11-2006, 23:44
...se vuoi un ticker ti consiglio di implementare il Timeable...


public class TimerTest implements Timeable {

public TimerTest(){

Timer ticker = new Timer(this,1000);
ticker.cont();

}


public static void main(String[] args) {

new TimerTest();

}

public void tick(Timer t) {

System.out.println("Tick! " +System.currentTimeMillis());

}


}


...ciao...


Grazie, ma l'esercizietto serviva solo per introdurre ai Thread ;)

lovaz
29-11-2006, 08:50
Ma che e' Timeable?