有人可以解释为什么以下程序在 3 秒后超时,而我将其设置为在 12 秒后这样做。我特意关掉了mysql服务器来测试这个mysql服务器不可达的场景。
import java.sql.Connection;
import java.sql.DriverManager;
/**
*
* @author dhd
*/
public class TestMysql {
static Thread trd;
public static void main(String[] argv) {
keepTrack();
try {
DriverManager.setLoginTimeout(12);
Class.forName("com.mysql.jdbc.Driver");
Connection c = DriverManager.getConnection("jdbc:mysql://localhost:3306/driving", "root", "");
} catch (Exception ex) {
System.err.println(ex.getMessage());
trd.stop();
}
}
public static void keepTrack() {
trd = new Thread(new Runnable() {
@Override
public void run() {
int i = 1;
while (true) {
System.out.println(i);
try {
Thread.sleep(1000);
} catch (Exception ex) {
}
i++;
}
}
});
trd.start();
}
}
输出是:
跑: 1 2 3 通讯链路故障 最后一个成功发送到服务器的数据包是 0 毫秒前。驱动程序没有收到来自服务器的任何数据包。 构建成功(总时间:3 秒)。
从 netbeans 运行。在问我为什么需要这个之前,请先回答。谢谢