我使用UUID.randomUUID().toString()將一個唯一值附加到最終存儲在數據庫中的字符串,并對其具有唯一約束
但是因為我的應用程序是多線程的,所以執行在UUID生成的同時發生,并且最終將相同的UUID附加到字符串并且持久性失敗.
有沒有更好的方法來生成隨機字符串,即故障安全方法.
我嘗試調試,當我暫停其他線程并讓它們一個接一個地運行時,它運行正常.
我目前正在使用以下代碼使其更隨機,但我不喜歡這種方法.
Random r = new Random();
List 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;
但這就像一個hacky代碼.我不喜歡這個.
有沒有人知道實際生成隨機字符串的防錯方法.
最佳答案 您可以同步uuid-generation方法,和/或您可以在池開始耗盡時預先生成uuid池并在一個線程中生成更多標識符.