Ich möchte einen Java-Code zu einem bestimmten Zeitpunkt auslösen, sagen wir jeden Morgen um 1 Uhr morgens.Wird eine unendliche While-Schleife übermäßige Ressourcen verbrauchen
schreibe ich einen Thread wie folgt:
while (true) {
if (currentTime = 1AM) {
doSomething;
}
}
Ich bin ein bisschen Sorge, die while loop
am Laufen halten, wird die Maschine verlangsamen oder Verarbeitungsressource auffressen?
Meine erste Frage ist, ich denke, wenn ich nur 1 Mal pro Sekunde Schleife, wird es besser?
while (true) {
if (currentTime = 1AM) {
doSomething;
}
Thread.sleep(1000);
}
Meine zweite Frage ist, einige Zeit sehe ich while loop
wie unten geschrieben, die meisten Zeit, um die Java-Sperre zu erhalten, kann jemand erklären, wie teuer, wenn wir die while loop
wie unten (sorry, wenn dies schreiben ist sehr grundlegende Frage)?
while (isLock) {
// do nothing
}
doThisIfNoLock();
erweitere ich die Gedanken über, wenn ich einen leeren Faden, und eine unendliches leeres while loop
innen, wie viele Ressourcen (Rechenleistung), die tatsächlich frisst durch den Thread erstellen? Weil es keinen Inhalt in der Schleife gibt, basiert die Schleife, basierend auf meiner Vorstellungskraft, sehr schnell und benötigt viele Zyklen CPU-Leistung? Ist das wahr?
Es gibt Scheduler, solche Dinge zu tun. Schau dir den Quartz Scheduler an. Wenn Sie Spring verwenden, können Sie solche Dinge planen. Ihr Ansatz ist schlecht – TheLostMind
Sogar 'java.util.Timer' ist besser als das, was Sie versuchen. –
Sie können keine unendliche While-Schleife ausführen. Es wird die Ressourcen lutschen und die Verarbeitung verlangsamen. Verwenden Sie stattdessen Scheduler. – Rish