В качестве хобби делаю один проект. В процессе написания сетевой части возник вопрос. Суть следующая. Мое приложение на Java должно подключиться к серверу и ждать оттуда данные или передавать их туда (с сервера поступает команда что-то сделать или на клиенте наступает событие о котором нужно отчитаться).
Реализовано это приблизительно так
InputStreamReader isr = new InputStreamReader(client.getInputStream());
BufferedReader in = new BufferedReader(isr);
PrintWriter out = new PrintWriter(client.getOutputStream());
String line;
String msg;
while (true) {
if (isr.ready()) {
line = in.readLine();
if (line.startsWith("EXIT")) {
Logger.getLogger(Client.class.getName()).log(Level.INFO,"Exit");
break;
}
if (line.startsWith("BEGIN")) {
Logger.getLogger(Client.class.getName()).log(Level.INFO,"BEGIN");
break;
}
} else {
try {
this.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if (! msg.isEmpty()) {
out.println(msg);
}
}
out.close();
in.close();
client.close();
Есть ли возможность обойтись без
this.sleep(1);
и не греть воздух холостым ходом?