Witajcie,
mam problem z wykorzystaniem klasy MyTimer w klasie głównej.
klasa MyTimer wygląda tak:
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer{
Timer timer;
public static boolean flaga;
int licznik = 0;
int minuta = 0;
//konstruktor
public MyTimer(){
timer = new Timer();
flaga = true;
timer.schedule( new Task(), 0 , 1000 );
}
class Task extends TimerTask{
public void run(){
System.out.println(licznik);
licznik++;
if( (licznik % 3) == 0 ){
minuta++;
System.out.println(minuta + "minuta...\n");
if(minuta == 1){
flaga = false;
timer.cancel();
}
}
}
}
}
Natomiast klasa Glowna tak:
public class Glowna {
public static void main(String[] args) {
System.out.println("start");
new MyTimer();
while (true){
System.out.println(MyTimer.flaga);
if (!MyTimer.flaga){
System.out.println("koniec");
System.out.println(MyTimer.flaga);
break;
}
}
}
}
Tak jak jest teraz, zakończenie pętli głównej następuje, po upływie 3 sekund, czyli tak jakbym chciał.
ale jeśli usunę pierwszą linijkę w pętli ( System.out.println(MyTimer.flaga); ), czyli pętla ma postać:
while (true){
if (!MyTimer.flaga){
System.out.println("koniec");
System.out.println(MyTimer.flaga);
break;
}
}
to pętla nie chce się zakończyć (nigdy nie jest spełniony warunek (!MyTimer.flaga).
Nie rozumiem dlaczego tak się dzieje, czy mógłby ktoś pomóc w zrozumieniu tego zjawiska?