关于同步的问题 一客户提交一远程方法,提交中,程序经过处理,修改数据库但是这同一客户同一时间2台电脑提交或者多个客户端提交,如何能禁止他同时提交而修改数据库错误而在同一时间,必须要允许其他用户提交过来请求.请问,如何能做到? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 将修改数据库的方法设置成 synchronized在有..数据库的设计也要改那个叫什么来的....数据库设计本身也有防止这样的设计..而不完全依赖语言 sql中有一个叫做事务的概念意思就是我有几个操作 他们合并在一起是一个原子操作 不可以拆分的当一个事物提交的时候 事务中的所有操作都进行提交 如果失败的话 可以返回提交之前的状态将你的数据库操作变成事务就可以了 不知道你是通过什么来操作数据库中的数据的,如果是通过hibernate,那么操作数据库的是session,那可以用ThreadLocal线程池来维护本地session变量。用户拿到的都是一个独立的session,改变的都是自己的副本不会对其他的产生影响。不会存在线程上的问题。代码如下public class HibernateUtils { private static Configuration conf; private static SessionFactory factory; private static ThreadLocal<Session> tl; static { conf = new Configuration().configure(); factory = conf.buildSessionFactory(); tl = new ThreadLocal<Session>(); } /** * 获得session * @return 一个session实例,是线程安全的 */ public static Session getSession() { Session session = tl.get(); if(session == null) { session = factory.openSession(); tl.set(session); } return session; } /** * 关闭session */ public static void closeSession() { Session session = tl.get(); if(session != null) { session.close(); tl.set(null); } }}如果你用的是jdbc直接访问,那么可以通过事务处理机制来同步,因为如果多个线程同时操作一个数据,必然会出问题,事务会回滚,不会提交。connection.setAutoCommit(false),提交完成后,connection.commit(),再connection.setAutoCommit(true)。至于加synchronized 同步是多余的。 呵呵,我用到数据库了,但是安装的时候遇到了麻烦! 关于IterableIterator java泛型重要吗? 关于静态类的问题 帮忙解决一个简单程序 java 正则表达式中的\G \A \Z如何使用? 请问:java.security.AccessControlException是什么错? 急问:请问在JBuilder里如何将源文件编译为.exe文件??? 学习JAVA编程,该学些什么? win2k如何卸载ie,10分奉上!!!! 请教关于图像绘制的问题。 初学java,请问系统配置问题
意思就是我有几个操作 他们合并在一起是一个原子操作 不可以拆分的
当一个事物提交的时候 事务中的所有操作都进行提交 如果失败的话 可以返回提交之前的状态
将你的数据库操作变成事务就可以了
private static Configuration conf;
private static SessionFactory factory;
private static ThreadLocal<Session> tl;
static {
conf = new Configuration().configure();
factory = conf.buildSessionFactory();
tl = new ThreadLocal<Session>();
}
/**
* 获得session
* @return 一个session实例,是线程安全的
*/
public static Session getSession() {
Session session = tl.get();
if(session == null) {
session = factory.openSession();
tl.set(session);
}
return session;
}
/**
* 关闭session
*/
public static void closeSession() {
Session session = tl.get();
if(session != null) {
session.close();
tl.set(null);
}
}
}如果你用的是jdbc直接访问,那么可以通过事务处理机制来同步,因为如果多个线程同时操作一个数据,必然会出问题,事务会回滚,不会提交。
connection.setAutoCommit(false),提交完成后,connection.commit(),再connection.setAutoCommit(true)。至于加synchronized 同步是多余的。