我想我可能在OracleUpdate5中发现了一个UUID多线程错误,我想知道是否有人可以用一个独立的例子来证实这一点。基本上发生的情况是,如果我并发调用UUID.Random() (我使用64个线程),大多数时候我很快就会发生冲突。
但是,如果通过预先运行一个测试来预热UUID生成器,只抛出一堆UUID,那么它似乎工作得很好。以下是scala的要点:
https://gist.github.com/3318973
重要的是要注意,我插入的是一个从64个不同线程同步的可变集合。主线程会阻塞,等待工作进程完成,然后检查设置的大小是否为应该的大小。冲突在发生时被打印出来。
谢谢!亚当
发布于 2012-08-11 10:47:53
可能是这样的:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7071826
它已经在7u6中修复了,应该很快就会发布。
发布于 2012-08-11 08:21:12
我用Java做了一个快速检查(没有涉及scala或scalatest ),也不能重现任何1.7.0_05冲突。我的基本设置是相同的,128个线程在每个同步集抛出10000个uids。这很可能是你的测试代码有问题,我不能在这台自动取款机上再检查一遍。
https://stackoverflow.com/questions/11910659
复制相似问题