java - 在多线程服务器中处理数据库连接时出现问题 - Java

标签 java multithreading thread-safety spring-jdbc

我已经创建了一个基于 Java 的服务器,它将监听来自客户端的数据。 当服务器接收到数据时,它必须解析它并在数据库中更新它。 客户端发送数据的频率很高,比如每 2-3 秒一次,客户端数量可以从 200-1000 不等。 我所做的是服务器不断地监听来自客户端的数据。 当它接收到数据时,它会启动一个新线程(对于每个客户端来说都是单独的线程)来解析数据并在数据库中更新它。 我只使用一个与数据库的连接来更新每个客户端的信息。
问题有时是先前的请求未完成并且客户端发送了另一个请求,这对其他客户端来说也在增加,因为我对所有客户端使用相同的数据库连接。

我需要建议来提高性能,是否应该为每个客户端创建单独的连接,否则我应该怎么做?

编辑:- 任何人请帮助代码。 说如果我正在处理 600-700 客户端发送数据并根据请求为每个客户端创建单独的线程然后中断它。那么我的数据库池大小应该是多少?。 更多线程也在并行运行,从而与数据库建立连接。如果正在处理客户端数据,我需要等待吗?但就我而言,我无法保存客户数据。我该如何处理? 请提出建议。

最佳答案

事先创建一个连接池。每当有新请求出现时,为该请求提供一个免费的连接。这样,您就不会动态连接/断开连接,并且仍然可以获得连接可用性。

关于java - 在多线程服务器中处理数据库连接时出现问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34251145/

相关文章:

c++ - C++ 11 原子对象的执行也是原子的吗?

java - 整数实例变量上的线程同步

java - org.json.JSONException : End of input at character 0 with api

java - 如何自定义java对象的序列化

java - 如何将托管在 Google 云引擎上的 spring boot 应用程序连接到 mysql 数据库?

multithreading - ZeroMQ 和多线程

go - 如何通过锁定在 Go 中实现线程安全的映射包装器?

java - Java 中的客户端服务器聊天应用程序,无需广播

java - volatile 是否同步原子数据类型的数组?

c++ - malloc_trim(0) 释放 Thread Arenas 的 Fastbins?