异步 jdbc 调用是否可行?
我想知道是否有一种方法可以对数据库进行异步调用?
例如,假设我有一个大请求,需要很长时间来处理,我想发送请求并在请求返回值时收到通知(通过传递监听器/回调或其他方式)。我不想阻止等待数据库应答。
我不认为使用线程池是一种解决方案,因为它无法扩展,在大量并发请求的情况下,这将产生非常大量的线程。
我们在网络服务器上遇到了这种问题,我们已经通过使用select/poll/epoll系统调用找到了解决方案,以避免每个连接有一个线程。我只是想知道如何与数据库请求具有类似的功能?
注意:我知道使用FixedThreadPool可能是一个很好的解决方法,但我感到惊讶的是,没有人开发出一个真正的异步系统(不使用额外的线程)。
** 更新 **
由于缺乏真正实用的解决方案,我决定自己创建一个库(finagle 的一部分):finagle-mysql。它基本上解码/解码mysql请求/响应,并在引擎盖下使用Finagle/Netty。即使有大量的连接,它的扩展性也非常好。