Java 如何保持数据库同步?

Java 如何保持数据库同步?,java,database,multithreading,Java,Database,Multithreading,在我的情况下,我需要保持每个角色的用户数量不能超过一定的自定义限制 如何用java编程?在我看来,我希望保持向数据库中添加或删除用户的同步,以避免线程读取用户数并同时添加或删除用户。但是,让一个长任务保持同步好吗 synchronized boolean addUser(UserVo vo){ Connection connect = db.getConnection(); String sql = generateSql(vo); int number = conne

在我的情况下,我需要保持每个角色的用户数量不能超过一定的自定义限制
如何用java编程?在我看来,我希望保持向数据库中添加或删除用户的同步,以避免线程读取用户数并同时添加或删除用户。但是,让一个长任务保持同步好吗

 synchronized boolean addUser(UserVo vo){
    Connection connect = db.getConnection();
    String sql = generateSql(vo);
    int number = connect.query("select count(*) from users where role='supermanager';") //long time, syncronized
    if(number > limit){
      return false;
    }
    connect.insert(sql);//long time, synchronized
    connect.close();
 }

仅在方法上同步不会有帮助,因为addUser和deleteUser可能同时发生。如果用户的数量不是很大,那么我会考虑在内存中保持<代码>所有用户<代码> >或代码>超级管理器对象< /代码>,并且在方法上对该同步进行访问是不可能的,因为并发用户和删除用户可能同时发生。如果用户的数量不是那么大,那么我会考虑在内存中保持<代码>所有用户或<代码>超级管理器对象< /代码>,并同步访问该列表。