jive2.1.2中SequenceManager问题,请指教,谢谢!!

02-12-26 flyings

jive2.1.2中SequenceManager类产生唯一id方法的主要思想是什么?

banq
2002-12-26 16:16

我有点记不清楚了:

为了防止两个用户同时得到一个ID 比如88, 各自+1后,写入数据库,结果数据库记录ID是89,其实这时应该是90。

jive采取了分段办法防止这个读和写不一致的情况,如果有人读取了ID但是没有更新数据库的ID,那么就另外一个用户就从下一段ID提取,比如88有人读取,那么同时有人再读时,就从88+15开始取ID

banq
2002-12-26 16:23

应该这么解释,为防止并发用户读取,预留一些号码,比如88+15,就是预留15个并发读取.

flyings
2002-12-26 16:38

public synchronized long nextUniqueID(){}本身不是就能防止并发吗?

banq
2002-12-26 17:43

这个方法只是保证并发来的用户排队一个个轮流执行nextUniqueID()方法,但是不能保证后一个用户执行nextUniqueID()时,前面一个用户已经执行完成nextUniqueID()

有点饶舌...

2Go 1 2 下一页