Dieses kleine Programm sollte "will never be printed" ausgeben, tut es aber nicht, zumindest nicht bei mir.
Es verfängt sich in der Endloßschleife obwohl b = true gesetz wird.
Sobald in die Endlosschleife weitere Anweisungen eingefügt werden wird auch die if-Anweisung aufgerufen.
Ich bin schlicht und einfach verwirrt.
OK, eine genauere erköärung:
Ich will b anfangs auf false gesetzt haben, sodass die if-Anweisung nicht aufgerufen wird.
Nach einer Sekunde wird b auf true gesetzt, und da die schleife in jedem Durchlauf testen sollte ob b wahr oder falsch ist, sollte der if-Block ausegführt werden sobald b = true ist, also nach einer Sekunde.
Es verfängt sich in der Endloßschleife obwohl b = true gesetz wird.
Sobald in die Endlosschleife weitere Anweisungen eingefügt werden wird auch die if-Anweisung aufgerufen.
Java:
class ThreadTest
{
public static boolean b = false;
public static void main(String args[]){
new Thread(){
@Override public void run(){
try{
Thread.sleep(1000);
}
catch(Exception e){}
b = true;
}
}.start();
while(true)
if(b)
{
System.out.println("will never be printed");
break;
}
}
}
Ich bin schlicht und einfach verwirrt.
OK, eine genauere erköärung:
Ich will b anfangs auf false gesetzt haben, sodass die if-Anweisung nicht aufgerufen wird.
Nach einer Sekunde wird b auf true gesetzt, und da die schleife in jedem Durchlauf testen sollte ob b wahr oder falsch ist, sollte der if-Block ausegführt werden sobald b = true ist, also nach einer Sekunde.
Zuletzt bearbeitet: