Это очень похоже на шаблон синглтона, который может быть реализован с использованием перечисления с одним значением:
enum Application{
INSTANCE;
private Application(){
//initialize
}
//other methods/fields can go here...
}
Инициализация будет происходить при первой загрузке класса. Загрузчик классов гарантирует безопасность потоков, то есть он будет вызывать конструктор только один раз, а другие классы, обращающиеся к Application.INSTANCE, будут заблокированы до полной загрузки.
Разница между этим и решением FutureTask заключается в том, что отдельного потока нет запущен, инициализация вызывается в первом потоке, который фактически использует его.