关于数据同步和并发(java)

比如一个客户表有id、personId(获得客户的人的id),有很多人做获取同一个客户操作,但是只有最先操作的人才可以获得要怎么做呢?关键是性能问题?我想到的只是同步锁定操作的方法,但是并不可行,锁定了方法后不同的客户id也不能同时操作了,各位请帮忙看看!谢谢!
[b]问题补充:[/b]
在代码里加一个同步的方法,也是我想到的,想问题下,如果不同的2人同时获取不同的客户,他们用的代码是不是同一个呢?那样的话,他们就是不能同时操作?

你的想法是可行的,只是对同一个Id进行锁就可以了,看了下面的代码就明白了:
[code="java"]

public class Syn {

private static final int DEFAULT_LOCK_CLEAR_LIMIT = 1000;

private int lockClearLimit = DEFAULT_LOCK_CLEAR_LIMIT;

private final Map<Object, Object> LOCKS = new HashMap<Object, Object>();

/**
 * 如果是同一个id, 拿到的锁就是同一个,不同的就拿到不同的锁,所以不同的id可以同时操作的
 * 
 * @param id
 * @throws Exception
 */
public void syntest(String id) throws Exception {
    Object lock;
    synchronized (LOCKS) {
        if (LOCKS.size() > lockClearLimit) {
            LOCKS.clear();
        }
        lock = LOCKS.get(id);
        if (lock == null) {
            lock = new Object();
            LOCKS.put(id, lock);
        }
    }
    synchronized (lock) {

        // 做你要做的在这里...
    }
}

}

[/code]

还是别在数据库端加锁,不好维护,你可以在代码里加一个同步的方法不就行了吗?然后用这个方法去访问数据库