Может ли вложенный, внутренний класс или интерфейс быть раннер-классом?
Можете пояснить. Может ли вложенный, внутренний класс или интерфейс быть раннер-классом. На практике вроде только во внешнем классе можно реализовать раннер?
Ответы (1 шт):
Автор решения: Podushkoved
→ Ссылка
В качестве примера можно привести интерфейс Runnable.
Создаем статический метод:
public static void test(Runnable runnable) {
System.out.println("Start");
runnable.run();
System.out.println("End");
}
Затем вызываем его из метода main:
public static void main(String[] args) {
test(() -> {
System.out.println("Do something");
});
}
Вывод:
Start
Do something
End
Такой код будет выполнен в текущем потоке. Для многопоточного режима см. класс Thread.
Создаем класс, имплементирующий интерфейс Runnable:
public class Runner implements Runnable {
@Override
public void run() {
System.out.println("Do something");
}
}
Затем создаем и запускаем отдельный поток:
public static void main(String[] args) {
Thread thread = new Thread(new Runner());
thread.start();
}
То же самое можно проще:
public static void main(String[] args) {
new Thread(() -> {
System.out.println("Do something");
}).start();
}
Вывод:
Do something