while (true) {
loc = getLocationOnScreen();
out.writeLong((long)loc.getX());
out.writeLong((long)loc.getY());
out.flush();
i++;
System.out.println(i);
}
此代码将快速运行约3秒钟,然后停止运行。
i
以大约16491
结束,永远不会继续增加。这里发生了什么?
答案 0 :(得分:1)
它正在放慢速度,因为在接收端,您可能会在读取下一个值之前使用您发送的值执行长任务。因此,另一方读取数据的速率小于您向其发送数据的速率。这样可以在另一侧填充接收缓冲区并在发送方发送缓冲区。最终,当两个缓冲区完全填满时,数据的传输就会停止。