Мне нужно сгенерировать уникальное число 32 бита в Java. Мне нужно вернуть номер как Java int, который требуется для интерфейса. Можете ли вы поделиться некоторыми идеями по этому поводу?
Номер будет использоваться как MySQL PK, и несколько потоков могут генерировать свои собственные уникальные идентификаторы одновременно. (Извините, мы решили не использовать инкрементный идентификатор MySQL)
Я пробовал класс UUID, но, похоже, генерируемые им данные содержат больше битов, чем я могу использовать
Я нашел это, но не уверен, работает ли он:
// seems no way to get int
UUID id = UUID.randomUUID();
System.out.println(id);
// not working either?
java.rmi.server.UID uid = new java.rmi.server.UID();
System.out.println(uid.toString());
// the one i am using
SecureRandom prng = SecureRandom.getInstance("SHA1PRNG");
prng.setSeed(System.currentTimeMillis());
int ret = prng.nextInt();
System.out.println(ret);