【问题标题】:Spring JdbcTemplate and ThreadingSpring JdbcTemplate 和线程
【发布时间】:2010-10-02 19:29:20
【问题描述】:

在 Swing 中使用JdbcTemplate 分叉线程以执行插入是否安全。

这是一个日志事件,我尽可能不希望它影响感知性能。

【问题讨论】:

    标签: java multithreading swing jdbc spring-jdbc


    【解决方案1】:

    来自 Spring 论坛的This answer 说 yes.t=25965

    JdbcTemplate 是一个单例,一旦设置就不会改变状态。

    【讨论】:

    • 不再。谢谢。
    【解决方案2】:

    还要注意它的线程安全是very well explained in the Spring 3.1 reference documentation:

    13.2.1.2 JdbcTemplate 最佳实践

    JdbcTemplate 类的实例在配置后是线程安全的。这很重要,因为这意味着您可以配置 JdbcTemplate 的单个实例,然后安全地将这个共享引用注入到多个 DAO(或存储库)中。 JdbcTemplate 是有状态的,因为它维护对 DataSource 的引用,但这种状态不是会话状态。

    【讨论】:

    • 并仔细阅读“一旦配置”位,所以不要滥用 setMaxResult 来限制给定查询的给定线程的结果集,因为它会影响所有查询和使用共享 JdbcTemplate 实例的所有线程。
    【解决方案3】:

    为什么你会认为它不会?

    我没有直接从 Swing 使用 JdbcTemplate,但我有几个 Web 应用程序(每个请求都有一个单独的线程),我从来没有遇到过任何线程问题。在这种情况下,模板在应用程序启动时配置一次,并使用不同的参数重复调用。

    如果您担心线程问题,您可以随时为每个日志线程创建一个新模板...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多