单个连接对象一次

时间:2013-11-11 12:25:20

标签: java sqlconnection synchronize

基本上我只希望一次只能连接单个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
}

我知道这不是一个正确的计划。我只想解释一下我想做什么。 简而言之,我希望单连接应该工作,等待另一个连接,直到连接关闭。

3 个答案:

答案 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方法,如果他们调用那么就必须等待其他方法。