Один простой способ создания уникального идентификатора для каждой JVM - запустить статический ServerSocket, для которого выбран порт 0, по которому он захватывает любой свободный порт.Поскольку никакие две ServerSockets (JVM или иным образом) не могут существовать на одном и том же порту, все они будут уникальными, и вы можете запросить его для номера порта.Поскольку он статический, в JVM будет только один.
Это зависит от того, какие у вас есть разрешения, но в большинстве случаев он работает просто отлично, и вы всегда можете привязать его к «127.0.0.1», чтобы сделать егоменее вероятно, что вы столкнетесь с любыми ограничениями.
static ServerSocket myssock;
static int myid;
static {
myssock = new ServerSocket(0);
myid = myssock.getLocalPort();
}
Если у вас есть несколько JVM на нескольких хост-машинах, вы можете комбинировать вышеперечисленное с IP-адресом локальной сети, чтобы создать уникальный идентификатор JVM в сети.*