Мне сказали запустить все мои процессы подключения MySQL в другом потоке помимо основного потока, чтобы избежать зависания основного потока процесса, который занимает несколько секунд.Установление соединения асинхронно
Поэтому я создал ConnectionPool в отдельном потоке, так что мой графический интерфейс запускается независимо от установления соединения. Однако это не так. Когда я запускаю программу, она ждет, пока соединение не будет установлено, а затем оно на самом деле запускает запуск (args); Моя забота - почему он не работает независимо при создании нового потока?
public static void main(String[] args) {
initiateConnection();
launch(args);
}
private static void initiateConnection() {
new Thread(() -> {
try {
connection = new ConnectionPool("jdbc:mysql://127.0.0.0/comm", "root",
"pass");
} catch (Exception e) {
}
}).run();
}
В чем разница между ними? – Pablo
'.start' на самом деле заставляет поток запускать выполнение (aka запускается асинхронно, создавая поток и вызывая' .run' в этом потоке); '.run' - синхронная операция. –