那在数据库访问中,自己编写一个类来实现,如果连接并打开数据库是用该类的静态程序段,而用该类的多个实例去操作,这时的同步问题该如何考虑?
例如:
public class AccessDatabase
{
  private static Connection con;  static
  {
    try
    {
      con = getConnection();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }
  }  public static Connection getConnection() throws SQLException, IOException
  {
    ………… ;
    return DriverManager.getConnection(url, username, password);
  }  public synchronized void ChangeData()
  {
    //这个方法不用同步吗?为什么?
  }

解决方案 »

  1.   

    我觉得你可以在取得数据库连接的那个方法中加上同步,从而可以使该类的多个实例有序的获取数据库连接,不会造成因为多个实例访问数据库时死锁或不一致的问题,但同时也降底了程序的效率,如果你允许多个实例同时连接到数据库的话,则可以不使用同步。public synchronized void ChangeDate(){}这个方法是干什么的?
      

  2.   

    问题是我想要多个实例共享一个连接,那么这多个实例都可以调用ChangeData方法,假定这个方法实现修改记录的功能,那么这个方法要同步吗?