Если он должен быть уникальным для ПК: вы, вероятно, можете использовать (System.currentTimeMillis() << 4) | (staticCounter++ & 15)
или что-то в этом роде.
Это позволит вам генерировать 16 в мс. Если вам нужно больше, сдвиньте на 5, и это с 31 ...
если он должен быть уникальным для нескольких компьютеров, вам также следует объединить MAC-адрес вашей основной сетевой карты.
изменить: уточнить
private static int staticCounter=0;
private final int nBits=4;
public long getUnique() {
return (currentTimeMillis() << nBits) | (staticCounter++ & 2^nBits-1);
}
и измените nBits на квадратный корень из наибольшего числа, которое вам нужно сгенерировать за мс.
Это в конце концов перевернется. Вероятно, 20 лет или что-то с nBits на 4.