gpt4 book ai didi

java - 具有内部类和最终变量的线程化 Java 服务器

转载 作者:行者123 更新时间:2023-11-30 06:30:48 25 4
gpt4 key购买 nike

我编写了以下代码来实现线程服务器:

ServerSocket passiveSocket = new ServerSocket(port, maxConnections);  
while(true){
final Socket socket = passiveSocket.accept();
new Thread(new Runnable() {
public void run() {
//access socket as needed to communicate. E.g.:
PrintWriter writer = new PrintWriter(socket.getOutputStream());
//Finally close socket.
socket.close();
}
}).start();
}

现在这似乎可行,但经过反射(reflection),我并不真正理解下一个连接到达时最终套接字变量 socket 发生了什么。每个线程如何与启动线程时当前的套接字实例相关联? - final 关键字对此负责吗?

最佳答案

这样想:socket 被 secret 地作为参数传递给 new Runnable 构造函数,并作为变量保存在匿名 Runnable< 中类。 (这实际上是它在字节码级别的工作方式。)

创建的 Runnable 对象在其创建时包含对一个特定 Socket 值的引用,因此它可以在完成时关闭该特定套接字。

关于java - 具有内部类和最终变量的线程化 Java 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195098/

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