【问题标题】:Multithreading in JDBC connectivityJDBC 连接中的多线程
【发布时间】:2009-11-02 05:59:30
【问题描述】:

我正在尝试将文件上传到服务器并将文件的信息存储到 Access 数据库中,是否需要在多个用户的数据库连接时处理线程。如果是怎么办?

【问题讨论】:

    标签: java jsp jdbc


    【解决方案1】:

    您的网络服务器继承了多线程,这使您无需实现自己的线程来处理上传。 但是请确保多个请求不使用相同的资源(不要将所有上传的文件写入同一个 tmp 文件中,...)

    为避免将数据保存到数据库时出现问题,请使用连接池。

    所以是的,您需要线程,但如果您的设计很好,那么所有线程都将由您的框架处理

    【讨论】:

      【解决方案2】:

      没错。每个 HTTP 请求本身已经是一个线程。请记住,Web 容器在应用程序的生命周期内只会创建一个 servlet 实例,并且 servlet 代码在所有请求之间共享。这意味着任何类级变量或静态变量都将在所有请求之间共享。如果你有这样一个变量,它是 not 线程安全的。您需要在方法级别声明特定于请求的变量 threadlocal。

      至于 JDBC:只需编写可靠的代码,一切都会顺利。使用连接池仅对提高连接性能有用(相信我,这确实值得付出努力,连接数据库是一项相当昂贵的任务,可能至少需要 200 毫秒甚至更多时间,同时重用池中的连接成本几乎没有)。它只是不会改变您编写的代码的线程安全性,它仍然在您的控制/手中。要清楚地了解如何以正确的方式进行基本的 JDBC 编码,您可能会发现 this article 很有用。

      【讨论】:

        猜你喜欢
        • 2014-12-10
        • 1970-01-01
        • 2012-06-13
        • 1970-01-01
        • 1970-01-01
        • 2015-12-31
        • 1970-01-01
        • 2012-11-18
        • 2010-11-15
        相关资源
        最近更新 更多