java - Java-Struts Web 应用程序中的重构方法会导致争用吗?

标签 java web-applications struts static-methods contention

我正在与一家公司合作,该公司使用 Struts 和 Java 来生成 Web 应用程序。最近我重构了很多代码来整理系统。我一直在使用的一种技术是将方法的 finally block 中的流的结束语句移至实用程序类。该实用程序类是静态的,并且具有针对各种类型的流的关闭方法。通过进行此重构,每次需要关闭流时,我可以节省 5 行代码,这将某些类中的代码减少了 600 行,这非常有利。然而,我担心这样做,如果投入生产,可能会引起对这些方法的争用。

我之前只在多线程编程中遇到过争用的概念,这就是为什么我不确定这是否会在这些情况下导致问题。

这可能吗?或者只是我对争用、静态方法、Web 应用程序等的误解?

提前致谢, 阿列克谢·布鲁。

最佳答案

最佳实践是关闭同一范围内的所有打开的文件处理程序。例如,当在方法中打开文件输出流时,也应该在该方法中关闭它。这也可以防止大多数并发问题(但并非总是如此)。但是,有许多异常(exception)情况不这样做,但在这种情况下跟踪和关闭所有文件处理程序会更加困难。

仅供引用,存在一种关闭方法,它完全按照您在 Apache Common IO IOUtils 中描述的方式进行操作。 。这是一个流行的库,您可以考虑使用。

关于java - Java-Struts Web 应用程序中的重构方法会导致争用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323901/

相关文章:

java - 用 | 分割字符串java中的分隔符

python - 存储站点/的恒定数据

java - 无法访问互联网的服务器上的 Tiles DTD 解析失败

javascript - 为什么 html 复选框功能只能在 IE 中使用,而在 Firefox 或 Chrome 中不起作用?

web-applications - 存储调查数据的最佳方式?

multithreading - struts Action 单例

java - 使应用程序全屏显示后 Libgdx Controller 无响应

java - FileUtils.iterateFiles 忽略

java - Hibernate 在 @JoinTable 上创建关系

php - JS 库和框架标准目录