Ответ 1
Это анонимный класс.
Анонимный класс - это локальный класс без имени. Анонимный класс определяется и создается в одном сжатом выражении, используя новый оператор.
Из имени метода это может быть метод Runnable.run().
public class Manager {
public static void main(String[] args) {
new Manager();
}
public Manager() {
// this is anonymous class
// |
// V
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("hi");
}
});
thread.start();
}
}
См