java - 如何同时进行多个 jsoup session (Spring Boot 项目和并发)

原文 标签 java spring performance concurrency spring-boot

也许这是一个非常基本的 Java 问题。如果是,请原谅我。

我有这个 Spring Boot 项目,对于每个注册用户,它需要自动(在后台)定期连接到网站并下载许多文档和/或检查更改。

“下载/检查”系统是外部开发的。每个方法都是静态的。

当我想要同时执行多个操作时,我是否认为这是一个问题?
即使它通过参数具有所有特定的连接参数?

考虑到这一点,我几乎删除了每个方法上的静态注释。现在我需要为每次执行创建一个新实例。

当我开始将它添加到我的 Spring boot 项目时,我意识到有很多服务可以同时连接到 Web 服务,而我什至不关心并发性。

AFAIK,每个服务都是一个单例。正确的?因此,每个连接都没有新实例。正确的?

我的问题是:如果我碰巧有 100 个用户......我应该如何集成 jsoup 代码?

  • 我应该从服务创建一个新实例吗?
  • 我是否应该将其转换为服务本身并将其@Autowire 转换为触发流程的服务?
  • 将其设为静态会更好吗? (这个我不这么认为,但也许我错了)
  • 还有其他选择吗?

  • 如果可能,请添加我应该遵循您的建议的理由。

    感谢大家的帮助。

    最佳答案

    首先我想说,如果你的类没有保持任何状态,那么如果一切都是静态的,这实际上是一件好事,因为这会让你更接近函数式编程。如果您将所有内容作为参数传递给方法并且在类(不是方法)中没有任何状态,那么所有内容都保存在堆栈中,线程之间不共享。长话短说:线程安全。

    如果您在类中维护任何类型的状态——无论是服务还是组件——那么你必须确保它们以线程安全的方式执行。最简单的方法之一是更改 @Scope当您将其作为 Web 应用程序运行时,该特定 bean 的原型(prototype)或例如请求。

    关于java - 如何同时进行多个 jsoup session (Spring Boot 项目和并发),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30713589/

    相关文章:

    java - ASTParser - MethodInvocation - 如何检测静态方法调用

    java - 配置数据源失败 : Intellij Error when connecting Database to Spring Application

    javascript - Chrome - devtools时间线中的事件时间和性能计时API之间的差异

    c# - 我可以使用 DataTable.Select() 方法进行简单的分页吗?

    Java 测量线程的利用率

    java - 运行程序,并观察到输出为:55 4 50 19

    java - 使用Apache Commons CSV跳过CSV文件中的空记录

    java - Android:AndroidHttpClient - 如何设置超时?

    java - spring 中默认的 hibernate session 控制行为是什么?

    java - 为什么我们不能同时使用 jspViewResolver 和 TilesViewResolver 呢?