我已经从main()函数启动了五个线程。
我写了三个函数如下:
getConnectionToDatabase();
saveToDataBase();
closeConnection();
现在我希望main函数在通过调用getConnectionToDataBase()启动这五个线程之前建立与数据库的连接,这样每个线程都不必启动新连接。
现在我希望每个线程都应该通过首先获取main()函数建立的连接来调用saveToDataBase()来存储数据。
我该怎么做?
如果您需要,我可以提供其他信息。
答案 0 :(得分:2)
这样做是个坏主意。 (感谢ChssPly76指出我的错误和糟糕的记忆。)
但是如果必须,让主类创建连接并将其传递给实现Runnable的每个类的构造函数。执行数据库工作的类将具有引用Connection的私有数据成员。然后主类在完成后关闭Connection。
更好的设计是每个线程连接一个连接池,但它是您的选择。
答案 1 :(得分:1)
你能否让getConnectionToDatabase返回一个数据库链接,然后将该链接传递给saveToDataBase和closeConnection。
这样,您只需连接一次并在该会话中使用该链接进行所有查询:
例如,您的连接功能可能类似于:
Class.forName("org.gjt.mm.mysql.Driver"); // Load the driver
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/data", "root", ""); // Connect
return conn;
然后将返回的链接传递给相应使用它的其他函数。
看看http://www.dreamincode.net/forums/showtopic32360.htm它非常有帮助。
答案 2 :(得分:0)