gpt4 book ai didi

java - 是否应该实例化实用程序类?

转载 作者:行者123 更新时间:2023-12-01 11:44:55 25 4
gpt4 key购买 nike

我目前正在为大学开展一个新项目,并且很好奇处理我创建的用于执行实用程序操作(例如散列密码)的类的最佳方式。

实用程序类是否应该包含静态方法,以便我像这样调用它们

Utilities.hashPassword(password,salt); 

或者我应该为每个调用创建一个新实例

new Utilities().hashPassword(password, salt);

现在,我为该类中的每个函数调用都有一个新实例,但我担心它对性能的影响,并且想知道它是否有必要这样做。

我实例化它们的最初原因是因为我不确定线程​​安全是如何工作的,并且担心多个用户调用相同的静态函数会导致问题。在阅读了一些有关 java 并发性的 Material 后,我现在非常确定即使该方法是静态的,它也是线程安全的。

我应该将它们全部更改为静态方法吗?这会提高性能吗?现在我的测试服务器在负载下崩溃了。

谢谢

最佳答案

线程安全并不关心方法是静态的还是真正的成员方法。线程安全关心数据的并发修改。因此,如果您的方法正在更新某些通用数据结构,那么仅将其设为静态就不是线程安全的。

反对“静态”的论点:任何静态的东西都很难在单元测试中模拟。因此,为了方便而将东西静态化时要非常小心。

关于性能方面:在java中对象创建非常便宜(不是完全免费,但是便宜)。在你的情况下 - 你可以将其保留为成员方法 - 只是避免一直丢弃你的实用程序对象。

关于java - 是否应该实例化实用程序类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29229556/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com