线程同步问题

在项目中遇到一个线程同步的问题:每个商户可以有多个终端,这些终端的销售统一使用一个账户信息,应该怎么让同一个商户的终端销售同步,不同的商户之间互相不影响呢???希望能够给出同步的代码,项目是java的。。。

你这个是用户用一个帐号,那可能就会导致这个帐号在操作同一个数据的时候出现混乱,比如这个在修改,那个在添加,另外一个准备删除,这样的话会遇到很大的系统问题。而解决这个问题的方法,就是在所设计到的表中加一个字段 int型的,取名比如叫做version,那么在准备操作的时候,提取出来+1,操作的时候,再对比一下数据库的记录,假如已经被+1了,说明另外一个正在操作,那么暂停本操作,你按照这个思路去考虑。 :wink:

你这个同步更多的不是代码同步,而是在数据操作方面的同步,建议加上乐观锁的限制。

一个账户 可以允许多人同时登录?
如果是这样可以有一个简单的方案。
定义一个普通锁类
[code="java"] public class UserLock {
String userId;

    public UserLock(String userId) {
        super();
        this.userId = userId;
    }

}[/code]

每个账户一个对象,UserLock lock1=new UserLock ("001");

对需要同步的操作加上
synchronized(lock1){
//job;
}
可以把锁放在HashMap中
HashMap locks=new HashMap();
做初始化。。。。
然后
synchronized(locks.get("userid")){
//job;
}

嗯 乐观锁的实现 我博客有一篇
[url]http://duyunfei.iteye.com/blog/849532[/url]

代码同步的话用synchronized,锁的对象最好是独立的 没有业务功能的object

而且你这个需求 不太需要代码同步,因为解决的是不同的问题,代码同步和数据同步差不多是两个概念,你弄到一起容易混淆。

[quote]代码同步和数据同步差不多是两个概念??
呵呵,看来我是混淆了,有介绍这两个的文章吗。。。 [/quote]
嗯 你这个明显说的是数据操作同步问题,代码同步更侧重与数据变量的变化需要同步,你做几次就自然明白了 :wink: