基本上我只希望一次只能连接单个sql连接,等待其他连接直到第一次关闭。
Class myConnection
{
private static Connection con=null;
public void getConnection()
{
con= DriverManager.getConnection("jdbc:sqlite:"
+ properties.getProperty("sqliteDatabase"));
}
public void closeConnection()
{
con.close();
}
public static void main(String s[]){
myConnection m1=new myConnection();
m1.getConnection();
//m1 object using con variable
myConnection m2=new myConnection();
//m1.still executing query using con object
m2.getConnection();
//i should not allow m2 access con object till con object is null
}
我知道这不是一个正确的计划。我只想解释一下我想做什么。 简而言之,我希望单连接应该工作,等待另一个连接,直到连接关闭。
答案 0 :(得分:1)
我建议将http://commons.apache.org/proper/commons-dbcp/用于此目的
BasicDataSource ds = new BasicDataSource();
ds.setUrl(url);
ds.setMaxActive(1);
现在只有一个线程可以从池中获取连接,其他线程将阻止
答案 1 :(得分:0)
您可以创建大小为Connection
的{{1}}对象池。例如:1
类。
答案 2 :(得分:0)
在Connection Class上实现signleton模式。
Class myConnection
{
private static Connection con=null;
public synchronized void getConnection()
{
con= DriverManager.getConnection("jdbc:sqlite:"
+ properties.getProperty("sqliteDatabase"));
}
public synchronized void closeConnection()
{
con.close();
}
public static void main(String s[]){
myConnection m1=new myConnection();
m1.getConnection();
//m1 object using con variable
myConnection m2=new myConnection();
//m1.still executing query using con object
m2.getConnection();
//i should not allow m2 access con object till con object is null
}
同步方法可以一次调用一次,没有两个对象可以同时调用synchronized方法,如果他们调用那么就必须等待其他方法。