0

基本上我只想一次只工作一个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
}

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

4

3 回答 3

1

我建议为此目的使用http://commons.apache.org/proper/commons-dbcp/

BasicDataSource ds = new BasicDataSource();
ds.setUrl(url);
ds.setMaxActive(1);

现在只有一个线程可以从池中获取连接,其他线程将阻塞

于 2013-11-11T12:29:56.400 回答
0

在 Connection 类上实现 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
}

同步方法一次只能调用一次,没有两个对象可以同时调用同步方法,如果它们调用,则一个必须等​​待另一个。

于 2013-11-11T13:02:39.503 回答
0

Connection您可以使用 size创建对象池1。例如有:ConnectionProvider类。

于 2013-11-11T12:30:40.340 回答