Сделать уникальный идентификатор только из чисел? - PullRequest
1 голос
/ 02 октября 2010

В программе я пытаюсь создать уникальные идентификационные номера. Я использовал этот способ:

AtomicInteger count = new AtomicInteger(0);
count.incrementAndGet();
int pid = count.get();
System.out.println("pid: " + pid);

Но мой профессор сказал это:

Другая проблема - генерация pid. Все, что вы делаете, это получаете следующее целое число, начиная с 0. Что произойдет, когда вы достигнете конца таблицы процессов? Вам пришлось придумать свой собственный алгоритм генерации pid, который работает в соответствии со спецификацией проекта, то есть он циклически перебирает числа от 0 до 99, а затем, когда он возвращается к низкому числу, он начинается с самого низкого доступного pid. Есть много способов реализовать такой алгоритм, но самое простое, что нужно сделать, это добавить 1 мод 100, а затем продолжать поиск, пока не найдете доступный pid. Конечно, это означает, что вы должны следить за тем, какие пиджи доступны.

Как мне это сделать?

1 Ответ

3 голосов
/ 02 октября 2010

Мне объяснение вашего профессора совершенно ясно - есть ли какая-то конкретная часть, которую вы не понимаете?

Если вы понимаете отдельные части, разделите задачу на более мелкие подзадачи и выполняйте их одну за другой. Как

  1. циклически перебирать числа от 0 до 99 (после 99 следующее число снова должно быть 0)
  2. добавить средство для хранения сгенерированных на данный момент чисел (например, в коллекции )
  3. добавить средство, чтобы проверить, что текущий номер еще не используется
  4. (добавьте средство для освобождения номера использованного процесса после завершения связанного процесса - из описания неясно, нужно ли вам это.)
...