我正在与一家公司合作,该公司使用 Struts 和 Java 来生成 Web 应用程序。最近我重构了很多代码来整理系统。我一直在使用的一种技术是将方法的 finally block 中的流的结束语句移至实用程序类。该实用程序类是静态的,并且具有针对各种类型的流的关闭方法。通过进行此重构,每次需要关闭流时,我可以节省 5 行代码,这将某些类中的代码减少了 600 行,这非常有利。然而,我担心这样做,如果投入生产,可能会引起对这些方法的争用。
我之前只在多线程编程中遇到过争用的概念,这就是为什么我不确定这是否会在这些情况下导致问题。
这可能吗?或者只是我对争用、静态方法、Web 应用程序等的误解?
提前致谢, 阿列克谢·布鲁。
最佳答案
最佳实践是关闭同一范围内的所有打开的文件处理程序。例如,当在方法中打开文件输出流时,也应该在该方法中关闭它。这也可以防止大多数并发问题(但并非总是如此)。但是,有许多异常(exception)情况不这样做,但在这种情况下跟踪和关闭所有文件处理程序会更加困难。
仅供引用,存在一种关闭方法,它完全按照您在 Apache Common IO IOUtils 中描述的方式进行操作。 。这是一个流行的库,您可以考虑使用。
关于java - Java-Struts Web 应用程序中的重构方法会导致争用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323901/