【发布时间】:2016-07-17 17:07:20
【问题描述】:
我是 Java 新手,但对 JavaScript 不是。
所以,在 JS 中你不能使用这样的代码
while(true){/* do something */}
因为这样浏览器标签会永远卡住。实际上在无限循环被调用后,关闭这个选项卡会很困难。
但在Java中,正如我所见,使用这样的代码是正常的
try {
while (true) {
try {
socket.println(data);
} finally {
socket.close();
}
}
} catch (IOException exception){
log(exception);
}
第一季度。那么,我想知道无限循环在 Java 中是如何工作的?
第二季度。如果我想在几个小时内监听套接字的数据,我的线程是否会卡在 JavaScript 的浏览器选项卡中?
第三季度。 (如果 Q2 == false)为什么 Java 无限循环不会像我们在 JavaScript 中看到的那样消耗 Thread 的所有可用资源?
第四季度。这种代码变体是否更适合套接字读取,因为我在“睡觉”时会错过一些重要数据?
while(true){
readSocket();
Thread.sleep(10);
}
【问题讨论】:
-
Socket不能这样工作,你需要先接受socket连接
-
Socket clientSocket = serverSocket.accept();在while循环中,确保while循环在thread或doInBackground中
-
如果我的套接字实际上是客户端而不是服务器怎么办?
标签: javascript java multithreading sockets infinite-loop