Java-программа зависает до тех пор, пока не будет установлено сокетное соединение - PullRequest
0 голосов
/ 04 апреля 2011

Я делаю простую реализацию telnet на Java с нуля.Я уже сделал простое сокетное соединение между работой клиента и сервера.Моя проблема заключается в том, что все серверное приложение зависает, когда оно ожидает подключения - даже если я запускаю его в отдельном потоке.Есть ли какой-нибудь (желательно) простой способ обойти это?

Фрагмент запуска потока:

    worker slave = new worker();
    Thread slaveThread = new Thread(slave);
    slaveThread.run();

Фрагмент потока:

работник открытого класса реализует Runnable {

public void run()
{
    try
    {
        ServerSocket srv = new ServerSocket(1337);
        System.out.println("Thread is running!");

        Socket clientSocket = srv.accept();
        System.out.println("Connection made.");
    }catch (IOException e){
        System.out.println("Failed.");

    }

Заранее спасибо!

Java Newbie

1 Ответ

2 голосов
/ 04 апреля 2011

Да, я начинаю поток с вызова run ()

Хотя Thread реализует Runnable, вы не должны вызывать run().Вы должны вызвать Thread.start () , что вызовет run() в новом потоке.Если вы вызываете run() напрямую, то поток current выполняет тот, который его выполняет, а не поток, который вы создали.

...