多个线程同时去测试多个服务器的数据库连接

我想实现多个线程同时去测试多个服务器的数据库连接是否可用,为了节约时间,我建立了多个线程同时去测试,可是我写的代码怎么都不能并发连接,总是一个连接完成后,另外一个再连接。... 我想实现多个线程同时去测试多个服务器的数据库连接是否可用,为了节约时间,我建立了多个线程同时去测试,可是我写的代码怎么都不能并发连接,总是一个连接完成后,另外一个再连接。难道jdbc不能多个线程同时并发连接多个数据库吗?
详细代码:
public class NodeInfo {
public String nodeIp;
public String nodeId;
public NodeInfo(String nIp, String nId){
nodeId = nId;
nodeIp = nIp;
}
}
public class DoProcess extends Thread {
private NodeInfo nodeInfo;

public DoProcess(String id, NodeInfo nInfo){//类MyThread的构造方法
super(id);
nodeInfo = nInfo;
}
public void run(){
boolean bRtn;
Connection conn;
String sSql= " ", sUrl= " ";
ResultSet rsSet = null;

System.out.println(sdf.format(cal.getTime()) + " Thread: " + getName() + "开始! " + nodeInfo.getNodeId() + "-> " + nodeInfo.getNodeIp());
try
{
System.out.println( " Thread: " + getName() + " 开始连接数据库! ");
sUrl = "jdbc:sqlserver:// "+nodeInfo.getNodeIp()+ ":1433;databaseName=test; "
+ "user=test;password=test; ";

Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver ").newInstance();
conn = DriverManager.getConnection(sUrl);
conn.close();
}catch(Exception ex)
{
System.out.println(sdf.format(cal.getTime()) + " Thread: " + getName());
System.out.println(sdf.format(cal.getTime()) + " \t连接 " + nodeInfo.getNodeId() + "-> " + nodeInfo.getNodeIp() + "数据库失败! " + ex.getMessage());
return;
}

System.out.println( "Thread: " + getName() + "结束! ");
}
}
展开
 我来答
lavijar1
2007-11-20
知道答主
回答量:1
采纳率:0%
帮助的人:0
展开全部
public class TestMain()
{
public static void main(String[] args) {
DoProcess dp1, dp2, dp3, dp4, dp5;
NodeInfo node;
node = new NodeInfo( "conn1 ", "10.10.10.1 ");
dp1 = new DoProcess( "Thread1 ", node);
node = new NodeInfo( "conn2 ", "10.10.10.2 ");
dp2 = new DoProcess( "Thread2 ", node);
node = new NodeInfo( "conn3 ", "10.10.10.3 ");
dp3 = new DoProcess( "Thread3 ", node);
node = new NodeInfo( "conn4 ", "10.10.10.4 ");
dp4 = new DoProcess( "Thread4 ", node);
node = new NodeInfo( "conn5 ", "10.10.10.5 ");
dp5 = new DoProcess( "Thread5 ", node);
dp1.start();
dp2.start();
dp3.start();
dp4.start();
dp5.start();
}
}
上面代码我简化后的代码。如果连接的5个服务器都不存在,5个线程都会在一定时间后超时,奇怪的是执行后的结果是conn1连接超时后,conn2连接然后超时,conn3连接然后超时……。并不是我想要是5个连接同时超时。 不知道为什么?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式