我正在使用UUID.randomUUID().toString()来为一个字符串附加唯一值,最终将其存储在数据库中,并对其进行唯一约束。但由于我的应用程序是多线程的,UUID生成和执行同时发生,最终相同的UUID被附加到字符串中,持久性失败。
有没有更好的方法来生成随机字符串,即故障安全方法?
我尝试过调试,当我暂停其他线程并让它们一个接一个地运行时,它可以正常工作。
我目前正在使用以下代码使其更随机,但我不喜欢这个方法。
有没有更好的方法来生成随机字符串,即故障安全方法?
我尝试过调试,当我暂停其他线程并让它们一个接一个地运行时,它可以正常工作。
我目前正在使用以下代码使其更随机,但我不喜欢这个方法。
Random r = new Random();
List<Integer> uniqueNUmbers = new ArrayList<>();
for (int i=0;i<10;i++) {
int x=r.nextInt(9999);
while (uniqueNumbers.contains(x))
x=r.nextInt(9999);
uniqueNumbers.add(x);
}
String string = String.format("%04d", uniqueNumbers.get(0));
string = uuid + string;
但这种方法不够优雅,我不喜欢它。
有谁知道一种真正可靠的方法来生成随机字符串吗?