Ich lese das Buch mit dem Namen Wirksame Java 2 in Element 66, es heißt, dass der Hintergrund Thread für immer laufen und nie aufhören wird. Aber wenn ich den Code in meinem Computer starte, hört es in einer Sekunde auf? Was ist los mit dir? ist es das Computer-Cache-Problem?Warum sollte ein Hintergrund-Thread ausgeführt und dann in einer Sekunde gestoppt werden? Sollte es für immer ausgeführt werden?
public class StopThread {
private static boolean stopRequested;
public static void main(String[] args)
throws InterruptedException {
Thread backgroundThread = new Thread(new Runnable() {
public void run() {
int i = 0;
while (!stopRequested) {
i++;
System.out.println(i+";");
}
}
});
backgroundThread.start();
TimeUnit.SECONDS.sleep(1);
stopRequested = true;
}
}
Die Bücher vorschlagen Synchronize
oder volatile
zu verwenden, aber ich versuche, und feststellen, dass auch ich nicht den Vorschlag nicht verwenden, es läuft in einem zweiten in meinem Computer. Aber renne für immer in meinem Mitbewohner. Er sagt, dass dies der Grund für die Cache-Konfiguration ist.
Kann mir jemand den Grund sagen?
Uhh, aber Sie stoppen den Thread nach einer Sekunde? 'while (! stopRequested)' läuft bis 'stopRequested = true;' was nach 'TimeUnit.SECONDS.sleep (1);' geschieht - warten Sie 1 Sekunde und stoppen dann den Thread. – TessellatingHeckler
.......... ernsthaft –
@ TessellatingHeckler, ich halte den Faden nicht auf.Es stoppt automatisch. – flower