执行每一行代码->事件->跳过重要的java代码行
客户端服务器#assumenocodeoptimization#ide:processing(麻省理工学院processing.org)
有一个线程“connectionhandler”停留在它发送或接收数据的循环中。在它接收第一个数据之前,每一行代码都会被执行。之后,程序似乎在system.out.println()处暂停!?然后,当更多的数据到达时,会再次执行某些行java代码,但会跳过与之完全相同的system.out.println()——此外,我前面提到的其他内容。
真正的问题是跳过了sendoutput()方法。这才是真正磨我的齿轮。请帮忙。
我正在麻省理工学院开发的一个名为“处理”的环境中编程。据我所知,它只会在代码周围 Package 更多的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”);什么都没有?!
...
Get
Received se: "SET PLAY MODE"
1
Received se: "Hey Ho1"
1
输出:服务器关闭
当我关闭另一端(服务器)时,每一行代码都会再次执行?!?!此外,它既不停止,也不抛出执行(但可能是不同的问题)。
...
Get
3
Send
Cycle ends
...
另外,如果我的观念被深深打破,我会感激很多提示。
暂无答案!
目前还没有任何答案,快来回答吧!