Вот это работает:
public static synchronized IMF getFund() {
//add your code here - добавь код тут
if (imf==null) imf=new IMF();
return imf;
}
А тут вылезает StackOverflowError:
public static IMF getFund() {
//add your code here - добавь код тут
synchronized (IMF.getFund()) { //если вместо getFund() написать class, то все норм.
if (imf==null) imf=new IMF();
return imf;
}
}