【问题标题】:When does a void method return control?void 方法何时返回控制?
【发布时间】:2015-02-19 18:13:41
【问题描述】:

我目前遇到一个问题,即 void 方法需要很长时间才能将控件返回给调用方法。从我的登台服务器上的基准测试来看,最多需要 0.5 秒才能返回。

这段代码实际上已经投入生产很长时间了,但直到最近才发生这种放缓。过去需要不到 10 秒的特定方法调用现在需要超过 30 秒才能完成。

如果相关,我正在使用SpringHibernate,并且此方法在服务类中。它所做的只是一个微不足道的更新,执行时间不到 0.001 秒。

是否存在 void 方法不会立即将控制权返回给调用方法的情况?

【问题讨论】:

    标签: java spring hibernate


    【解决方案1】:

    void 方法何时返回控制权?

    只要方法完成或执行显式return 语句。

    是否存在 void 方法不立即将控制权返回给 调用方法?

    如果您使用的是 Spring 等框架,可能会配置 pre/post 任务,这可能会增加周转时间。

    【讨论】:

    • 我在想它可能是这样的,但你知道具体是什么吗?
    • 检查是否有AOP调用(在代码中搜索@Aspect)。
    • @Akolopez 正如 Mike 建议的那样寻找 AOP 切入点或类似的东西。
    【解决方案2】:

    你的类可能是一个代理,因为它是由 Spring 或 Hibernate 管理的。例如,如果您使用 @Service 注释了您的类,那么您的方法在事务中被调用;因此可能需要一些时间。希望对您有所帮助。

    【讨论】:

    • 我想我应该补充一点,它已经投入生产很长时间了,而我最近才出现这种放缓。谢谢。
    • 您应该检查您的 SQL 查询需要多长时间(如果更新访问数据库)。
    猜你喜欢
    • 2015-12-06
    • 2012-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    • 2011-12-05
    • 1970-01-01
    相关资源
    最近更新 更多