Java命令行应用程序在不占用资源的情况下进行后台工作的正确方法是什么?它应该在循环中使用sleep()还是更优雅/有效的方式?
一些启发式:
不要尝试在您的应用程序中做出调度决策.操作系统的调度程序比你的更好.让它完成它的工作.
如果你不需要,不要进行民意调查.例如,而不是睡n秒,然后醒来检查一个未阻塞的套接字,阻塞套接字.第二种策略在操作系统的调度程序中运行得更好.
如果你不需要,不要使用庞大的堆,并尽量不要一次分配大量的内存.颠簸应用程序往往会对系统性能产生负面影响.
使用缓冲I/O. 总是.如果您认为需要非缓冲I/O,请绝对确定您是对的.(你可能错了.)
不要产生很多线程.线程非常昂贵; 超过某一点,更多线程将降低您的应用程序的性能配置文件.如果你有很多工作要做,同时学习和使用java.util.concurrent
.
当然,这只是一个入门名单......