Клиент ServerSocket, пока (True)

У меня вопрос по поводу Пока (правда). Обычно уничтожает центральный процессор компьютера. Почему в этом случае он не работает постоянно? И как я могу заставить его работать, если мне это нужно?

public void startConnection() {
       try {
           client = new Socket(ip, port);
       out = new PrintWriter(client.getOutputStream(), true);
       in = new BufferedReader(new 
InputStreamReader(client.getInputStream()));
       out.println("Connection started from, " + client.getLocalAddress());
       out.flush();
       while (true) {
           String recieve = in.readLine();
           System.out.println(recieve);

           @SuppressWarnings("resource")
        Scanner scan = new Scanner(System.in);
           String send = scan.nextLine();
           if (send != null ) {
           out.println(send);
           out.flush();
           }
       }
            } catch (Exception e) {
               System.out.println(e);
                JOptionPane.showMessageDialog(null, e.toString(), 
"Connection-Error", JOptionPane.ERROR_MESSAGE);
                System.exit(0);
        }
    }

ну это блокировка на readLIne на входном потоке

Scary Wombat 14.08.2018 07:49
И как я могу заставить его работать, если мне это нужно? сначала исправьте отступ, затем скомпилируйте, затем запустите
Scary Wombat 14.08.2018 07:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтение из сокета - это операция блокировки (в зависимости от конфигурации сокета и параметров в вызове). В этом случае ОС будет блокировать вас до тех пор, пока в сокете не появится что-то для чтения.

Вы можете настроить сокет на тайм-аут операции чтения, если вам нужно.

Другие вопросы по теме