Возможно, да или нет, в зависимости от того, какие шаги вы делаете и какие случаи вы имеете в виду.
Чисто в рамках JVM, я бы сказал, нет. Ресурсы, загружаемые разными загрузчиками классов, считаются отличными. Поэтому, независимо от того, какие проверки вы установили, ваш единственный файл Foo.class
может быть загружен разными загрузчиками классов, и будут созданы два экземпляра вашего статического объекта. Статические переменные, на которые они ссылались, были бы разными, поэтому один из них не мог видеть, что другой уже был создан.
Однако, если вы хотите использовать внешние ресурсы (например, файл в локальной файловой системе, если вы определенно можете записать в каталог), тогда это может быть возможно. Это предполагает, что внешняя система имеет семантику сравнения и настройки или другую синхронизацию, иначе у вас есть потенциальное состояние гонки, которое может привести к тому, что другие потенциальные экземпляры видят, что другой не работает, а затем запускается.
Последний случай может иметь значение в зависимости от того, почему вы так уверены, что второй экземпляр не может существовать. Если это связано с тем, что это может привести к повреждению какого-либо внешнего ресурса, установите ограничение на этот ресурс.
Перед этим вы можете определить «по-настоящему»? –
Под «действительно» я имел в виду, что в области приложения может быть создан один экземпляр. –