gpt4 book ai didi

javascript - 为什么Java无限循环是可能的?对此有何建议

转载 作者:行者123 更新时间:2023-11-29 17:56:44 24 4
gpt4 key购买 nike

我是 Java 的新手,但不是 JavaScript 的新手。

所以,在 JS 中你不能使用这样的代码

while(true){/* do something */}

因为这样浏览器选项卡将永远卡住。实际上在调用无限循环后很难关闭此选项卡。

但是在Java中,正如我所见,使用这样的代码是很正常的

try {
while (true) {
try {
socket.println(data);
} finally {
socket.close();
}
}
} catch (IOException exception){
log(exception);
}

Q1。所以,我想知道无限循环在 Java 中是如何工作的?

Q2。如果我想监听 socket 数小时的数据,我的 Thread 是否会卡在 JavaScript 的浏览器选项卡中?

Q3。 (如果 Q2 == false)为什么 Java 无限循环不像我们在 JavaScript 中看到的那样消耗 Thread 的所有可用资源?

Q4。这种代码变体是否更适合套接字读取,因为我可能会在“ sleep ”时错过一些重要数据?

while(true){
readSocket();
Thread.sleep(10);
}

最佳答案

Q1 - 无限循环将重复代码,直到以某种方式被中断。在这种情况下,它实际上不是无限的——它使用了一种技巧。抛出异常时存在循环。

Q2 - 线程确实卡在了循环中。但在 Java(和许多其他语言)中,您可以创建另一个线程来运行您的 UI 或您需要同时运行的任何内容。

Q3 - 不,它完全使用线程。

Q4 - sleep 对你没有帮助。当线程处于 hibernate 状态时,它什么都不做,因此它仍然处于“卡住”状态。

关于javascript - 为什么Java无限循环是可能的?对此有何建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com