JDBC连接中的多线程

时间:2009-11-02 05:59:31

标签: java jsp jdbc

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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