我知道应该在静态上下文中访问 sleep 。然而,我需要更多的意见,以便我可以向管理层辩护。我现在处理的大多数遗留代码都使用 new Thread().sleep 而不是 Thread.sleep。
这有多糟糕?
for (int c = 0; c < 5; c++) {
new Thread().sleep(5000);
}
与此相比?
for (int c = 0; c < 5; c++) {
Thread.sleep(5000);
}
编辑:
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");
结果(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
结果(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
最佳答案
这只是文盲编程,就这么简单。同样适用于以这种方式调用任何静态方法,它不限于 Thread.sleep()。它会带来毫无意义的空间和时间成本,但更糟糕的是,它暴露了程序员的主要概念误解。我不会花太多精力去修复所有的问题,但我肯定会做一些对相关人员进行再教育的事情。
关于java - 与 Thread.sleep 相比,new Thread().sleep 在 CPU 和内存利用率方面有多差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5216781/