有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我对Java不熟悉,但对JavaScript不熟悉

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

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

因为这样一来,浏览器标签就会永远卡住。实际上,在调用无限循环后,很难关闭此选项卡

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

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

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

问题2。如果我想在socket上监听数小时的数据,我的线程是否会被困在带有JavaScript的浏览器选项卡上

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

第四季度。这种代码变体是否更适合socket读取,因为我在“睡觉”时可能会错过一些重要数据

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

共 (1) 个答案

  1. # 1 楼答案

    Q1)首先要理解为什么这段代码不是一个无限循环,看看异常在java中是如何工作的。每当try块中发生异常时,它都会立即移动到catch语句。因此,套接字最终将关闭,然后在再次访问套接字时抛出异常。while循环将退出,错误处理程序块将运行。所以这不是一个无限循环

    java中的无限循环与任何其他编程语言一样工作——如果没有退出条件,代码将无法退出

    问题2)如果你想长时间监听数据,有很多预构建的类可以帮你处理这些数据。研究Java ServerSocket和一些相关/衍生类

    问题3)不确定如何回答,请参见上文

    问题4)再次请参见答案#2。许多问题都是通过使用内置服务器方法解决的。如果不想使用内置函数,它们可以作为构建自己的类的很好参考

    祝你好运