Mir ist bewusst, dass der Zugriff auf sleep in einem statischen Kontext erfolgen sollte. Ich benötige jedoch mehr Informationen, damit ich dies gegenüber dem Management verteidigen kann. Der meiste Legacy-Code, den ich bearbeite, verwendet jetzt new Thread().sleep anstelle von Thread.sleep.
Wie schlimm ist das?
for (int c = 0; c < 5; c++) {
new Thread().sleep(5000);
}
im Vergleich zu diesem?
for (int c = 0; c < 5; c++) {
Thread.sleep(5000);
}
EDIT:
final long start = System.currentTimeMillis();
System.out.println("Total memory: " + Runtime.getRuntime().totalMemory());
System.out.println("Free memory: " + Runtime.getRuntime().freeMemory());
System.out.println("===========================");
for (int c = 0; c < 5; c++) {
new Thread().sleep(5000);
System.out.println("Used memory: " + (Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory()));
System.out.println("===========================");
}
System.out.println("Total memory: " + Runtime.getRuntime().totalMemory());
System.out.println("Free memory: " + Runtime.getRuntime().freeMemory());
System.out.println("===========================");
System.out.println("Time elapsed: " + (System.currentTimeMillis() - start) + " milliseconds");
Ergebnis (new Thread().sleep):
Total memory: 5177344
Free memory: 4990904
===========================
Used memory: 186440
===========================
Used memory: 205136
===========================
Used memory: 205136
===========================
Used memory: 205136
===========================
Used memory: 205136
===========================
Total memory: 5177344
Free memory: 4972208
===========================
Time elapsed: 24938 milliseconds
Ergebnis (Thread.sleep):
Total memory: 5177344
Free memory: 4990904
===========================
Used memory: 186440
===========================
Used memory: 186440
===========================
Used memory: 204848
===========================
Used memory: 204848
===========================
Used memory: 204848
===========================
Total memory: 5177344
Free memory: 4972496
===========================
Time elapsed: 24938 milliseconds
0 Stimmen
In beiden Fällen ist die Ruhezeit um mehrere Größenordnungen länger als der "Overhead" von
new Thread()
. Dennoch stimme ich dem zu, was EJP weiter unten sagt.0 Stimmen
@all sorry für meine Antwort.. ich habe nicht gesehen, dass Java-Tag.. ich antwortete im Kontext der C#.. Mein Fehler :(
0 Stimmen
@Shekhar: Keine Sorge, es ist nicht persönlich. Ablehnende Bewertungen erfolgen ausschließlich, weil die Antwort hier nicht zutrifft.
1 Stimmen
Ja, ich weiß.. sollte bemerkt haben, dass. sowieso gut Punkt ist, bekam ich Peer Pressure Abzeichen.. etwas für den Verlust von 8pts :)
1 Stimmen
Es sieht so aus, als ob es besser wäre, Folgendes zu verwenden
Thread.sleep(25000)
.