Я понимаю, что в условии написано именно if, но с while все тоже верно выводит, почему компилятор не принимает?
if (createdThreadCount < Solution.count) {
                    System.out.println(new GenerateThread());
                }
while (createdThreadCount < Solution.count) {
                    System.out.println(new GenerateThread());
                }