我一直在思考为什么JDBC只是阻塞操作,为什么我不能在onResultSetArrived(ResultSet rs)上设置一些侦听器来处理假设的事件。为什么我必须为每个JDBC查询阻止单个线程。
过了一会儿,我深入研究了Java Sockets(我想JDBC是建立在它们之上的),并意识到那里也没有任何事件处理。提供非阻塞读取的唯一选项是通过available()方法,但这非常低效,因为必须定期在循环中检查它。
据我所知,中断是PC中的基本事物。它从硬件到操作系统都有涉及。在Java中,可以在从Socket读取值时实现事件驱动方法。
现在,我的问题是我是否遗漏了什么,存在某些解决方法或当前的Java架构确实是一个线程对应一个阻塞操作?如果是,这不是低效的吗?