表格列#34;计数"。它有主键" rowID"。现在我想获取此计数,将其递增1并更新它。我有一个场景,多个实例/线程尝试更新相同的列 - 计数。
例如。 3个线程t1,t2,t3(未同步)。 t1获取计数(比如0)并递增和更新。现在计数为1.现在有可能t2和t3可能同时尝试访问计数,然后出现问题。
请建议正确的方法来处理这种情况。
答案 0 :(得分:1)
这是数据库序列/锁的用途。你应该使用它们。 但是,如果要使用线程同步,则必须在单个同步块或方法中放置“获取更新代码”。
这两种方法中的任何一种都可以达到您的目的。
synchronized void method(){
// fetch
// increment
// update
}
void method(){
synchronized (obj) {
// fetch
// increment
// update
}
}