JDBC URL上的socketTimeout与java.sql.Connection上的networkTimeout有什么区别

最佳答案

Connection.networkTimeout是在Java 7中引入的,目的是让驱动程序负责正确的清理(使用提供的执行器)。我不确定驱动程序实现对这个方法的支持程度。
另一方面,socketTimeout是特定于驱动程序的(尽管大多数驱动程序都有类似的设置),通常用于使用Socket.setSoTimeout(int)配置低级套接字超时。
主要区别在于,setNetworkTimeout指定发生此超时(使连接无效并关闭连接)后驱动程序的预期行为,而socketTimeout配置可能会使连接处于不可用状态(即它可能显示为打开,但不可用)。setNetworkTimeout还允许在连接已打开时更改超时。

10-07 20:43