我有一个到数据库的静态 java 连接。
第一个线程
通过我的静态连接,我正在创建一个语句并调用 executeQuery() 方法。此时我正在等待,因为查询结果非常大,我必须等待超过 15 分钟。
第二个线程
使用相同的静态连接,我正在尝试调用 createStatement() 方法。这里第二个线程被阻塞了。
有很多方法可以解决这个问题,但我找不到任何地方为什么这种方法不起作用。有任何想法吗?
我有一个到数据库的静态 java 连接。
第一个线程
通过我的静态连接,我正在创建一个语句并调用 executeQuery() 方法。此时我正在等待,因为查询结果非常大,我必须等待超过 15 分钟。
第二个线程
使用相同的静态连接,我正在尝试调用 createStatement() 方法。这里第二个线程被阻塞了。
有很多方法可以解决这个问题,但我找不到任何地方为什么这种方法不起作用。有任何想法吗?
Connection
常见的方式是通过Sockets
机制实现对数据库的单向。最好说,您的单曲connection
是某种管道,用于每次执行一个的具体查询。
很难想象这样一种最优和高性能的代码实现,尽管一个套接字多个查询及其结果是并行发送的。这样的实现可能会导致与数据包的混淆,至少会导致它们丢失。
正如上面评论中提到的karmanaut,您需要实现DB pool,即连接池,它将同时用于每个语句。