java uuid 线程安全_java – 在多线程应用程序中生成相同的UUID
我使用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池并在一個線程中生成更多標識符.
總結
以上是生活随笔為你收集整理的java uuid 线程安全_java – 在多线程应用程序中生成相同的UUID的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Ventoy制作启动盘
- 下一篇: 【元胞自动机】基于matlab元胞自动机