Уникальный идентификатор объекта

280
16 февраля 2018, 18:49

Пишу сервер на NIO2. Для каждого подключившегося клиента создается объект, который обрабатывает его события. Хочется все логировать и при этом в лог писать некий уникальный идентификатор, скажем, аналог адреса объекта. В Java есть что-то встроенное или писать свой инкрементный счетчик?

Answer 1

можно не использовать синхронизацию, ведь есть AtomicInteger

public class Client {
    private static AtomicInteger at = new AtomicInteger(0);
    public int getNext(){
        return at.incrementAndGet();
    }
}
Answer 2

Сделал так

public class Client {
    private static int counter = 0;
    private synchronized static int nextCounter() {
        return counter++;
    }
    public final int index = nextCounter();
    .............
}
Answer 3

Есть несколько вариантов, что использовать в качестве идентификатора:

  • значение функции hashCode(). Использовать только с имутабельными объектами либо с теми, где значение функции не зависит от изменяемого состояния
  • значение new Random().nextLong()
  • либо UUID.randomUUID().toString()
READ ALSO
Что лучше среди RecyclerView, ListView, ScrollView и т.п

Что лучше среди RecyclerView, ListView, ScrollView и т.п

Работая с динамичным добавлением элементов в виде списка понял что есть множество разных типов как RecyclerView, ListView, ScrollView и тому подобномуУже...

190
Как наложить текстуру на полигон в OpenGL?

Как наложить текстуру на полигон в OpenGL?

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

187