Приложение зависает после прослушивания java serversocket - PullRequest
1 голос
/ 18 апреля 2019

У меня есть приложение JavaFX, и я вызываю следующий код нажатием кнопки.

new Thread(() -> {
    ServerSocket serverSocket = null;
    try {
        serverSocket = new ServerSocket(4558);
        Socket accept = serverSocket.accept();
    } catch (IOException e) {
        e.printStackTrace();
    }
}).run();

В потоке я хочу предотвратить зависание пользовательского интерфейса, но приложение не вернуло никаких отзывов после serverSocket.accept (). Порт не заблокирован.

Кто-нибудь знает почему? Заранее спасибо!

1 Ответ

4 голосов
/ 20 апреля 2019

При запуске Thread не вызывайте метод run(), а start().

Код будет выглядеть так:

new Thread(() -> {
    ServerSocket serverSocket = null;
    try {
        serverSocket = new ServerSocket(4558);
        Socket accept = serverSocket.accept();
    } catch (IOException e) {
        e.printStackTrace();
    }
}).start(); // was run();
...