Czy istnieje sposób, aby nie zawieszać się BufferedReader.readLine()
?Jak sprawić, aby BufferedReader.readLine() nie zawiesił się?
tworzę serwer, który:
- Sprawdza, czy klient wydał żadnych danych.
- Jeśli nie, wykonuje inny kod, a następnie wraca do sprawdzania klienta pod kątem wprowadzania danych.
Jak mogę sprawdzić, czy klient dostarczył dane wejściowe bez uruchamiania readLine()
? Jeśli uruchomię readLine()
, wątek będzie zawieszony do momentu dostarczenia danych wejściowych?
Dlaczego? Serwer powinien mieć oddzielny wątek do czytania na klienta, jeśli korzystasz z blokujących operacji we/wy. – EJP
Nie chcę tworzyć dwóch wątków dla każdego użytkownika. Mam już jeden wątek dla każdego użytkownika. – Cin316
To jest niefortunna rzeczywistość biblioteki I/O Java. Możesz albo 1) Zakręcić oddzielne wątki do czytania 2) Korzystać z biblioteki NIO 3) Nie używać readLine() i samodzielnie zarządzać buforowaniem i końcem linii – creechy