Каждая строка кода выполняется -> Событие -> Пропущены важные строки кода Java
# Клиент-сервер # AssumeNoCodeOptimization # IDE: Обработка ( Processing.org с помощью MIT)
Существует поток «ConnectionHandler», который находится в цикле, где он либо отправляет, либо получает данные.Перед получением первых данных выполняется каждая строка кода.После этого программа , кажется, останавливает в System.out.println () !?Затем, когда поступает больше данных, определенные строки Java-кода снова выполняются , но тот же самый System.out.println () - помимо прочего, который я упоминал ранее, пропускается.
Самой проблемой является , на самом деле метод sendOutput () пропущен .Это то, что действительно размалывает мои механизмы.Пожалуйста помоги.
Я программирую в среде, называемой Processing, разработанной MIT.Насколько я знаю, это только оборачивает больше Java-кода вокруг вашего кода.
Ниже в следующих фрагментах кода я объясню, почему я думаю, что оптимизация кода с помощью JIT или AOT не является проблемой (В конце я думаю, что ябудет неправильно. Я надеюсь, что наоборот, потому что вы не можете передать Системные переменные в Обработку, чтобы подавить оптимизацию)
private void runConnectionHandler() {
final BufferedReader inFromClient = getBufferedReader(socket);
final DataOutputStream dataOutputStream = getDataOutputStream(socket);
while (true) {
getInput(inFromClient);
sendOutput(dataOutputStream);
System.out.println("Cycle ends");
}
}
private void getInput(final BufferedReader input) {
System.out.println("Get");
try {
String clientSentence = null;
if (input.ready()) {
while ((clientSentence = input.readLine()) != null) {
inputQueue.add(new GameData(clientSentence));
System.out.println("Received se: \"" + clientSentence + "\"");
System.out.println("1");
}
System.out.println("2");
}
System.out.println("3");
}
catch (final Exception e) {
e.printStackTrace();
}
}
private void sendOutput(final DataOutputStream dataOutputStream) {
System.out.println("Send");
while (outputQueue.peek() != null) {
try {
String out = outputQueue.poll().toString();
dataOutputStream.writeBytes(out + "\r\n");
dataOutputStream.flush();
System.out.println("Sent \"" + out + "\"");
}
catch (final Exception e) {
e.printStackTrace();
}
}
}
ВЫХОД: Перед первыми данными:
Не имеяИдея об оптимизации Я думаю, что она также должна вступить в силу здесь, но это не так?
...
Get
3
Send
Cycle ends
...
ВЫХОД: Первые данные прибывают
После "1"выход прекращается.Почему System.out.println ("2"); и т. Д. Не выполняется ?!Почему это останавливается?!?!
...
Get
3
Send
Cycle ends
Get
Received se: "SET PLAY MODE"
1
ВЫХОД: Вручную отправлено больше данных
Gad dayium, я имею в виду, куда пошла моя система.out.println ("Получить"); и все?!
...
Get
Received se: "SET PLAY MODE"
1
Received se: "Hey Ho1"
1
ВЫХОД: Сервер выключается
Когда я выключаюсьс другой стороны (сервер), каждая строка кода выполняется снова?!?!Кроме того, ни это не останавливается, ни выполнение не брошено (Но, возможно, другая проблема).
...
Get
3
Send
Cycle ends
...
Также, если моя концепция сильно нарушена, я буду признателен за множество подсказок.