@Ezekiel4
Охотник на пиратов и сборщик монолитов

Зачем выносить точку входа в отдельный класс?

Изучая java, я часто смотрю ролики на YouTube, как другие люди пишут код и решают разные задачи. Я заметил, что часть из них оставляет точку входа в главном классе, а часть выносит в класс-лаунчер. В связи с этим первый вопрос:
1. Зачем выносить точку входа в отдельный класс?
Из тех, кто так делает, часть инициализирует программу в функции main, а часть создаёт поток, в котором вызывается конструктор класса-лаунчера. Я, конечно, с потоками ещё разбираюсь, но
2. Зачем создавать новый поток, если у программы есть собственный?
Я пробовал и так и так и, если честно, не понимаю в чём разница.

import javax.swing.*;

public class Launcher {

	public Launcher() {
		JFrame main = new JFrame("Java calculator");
		main.setSize(360, 448);
		main.add(new UserInterface(main));
		main.setLocationRelativeTo(null);
		main.setResizable(false);
		main.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		main.setUndecorated(true);
		main.setVisible(true);
	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			@Override
			public void run() {
				new Launcher();
			}
		});
	}
}
  • Вопрос задан
  • 138 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Если вкратце, то он запускает лаунчер в EDT (Event Thread Dispatch), так как Swing потоконебезопасен и все операции с GUI должны запускаться в новых потоках, дабы исключить зависание и другие пробелмы поведения программы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
GavriKos
@GavriKos
А почему вы в комментах под тем видосом это не спрашиваете?
Ситуация "там какой то дядька делает вот так - почему он делает так?"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы