对连接单个服务器的多个客户端有疑问。这里是我的服务器端代码:多个客户端连接服务器java
//...
ServerSocket serverSocket = null;
try{
serverSocket = new ServerSocket(port);
}catch(IOException e){
e.printStackTrace();
}
Socket server = null;
while(true){
try{
server = serverSocket.accept();
new createdThread(server).start(); //This is a thread class specified somewhere else to handle the socket.
}catch(IOException e){
e.printStackTrace();
}
createdThread()
是,将开始处理插座一个线程,它需要的Socket server
作为参数。假设我有一个连接并启动一个线程,接受的套接字作为参数传递给线程。在这种情况下,如果我没有错,应该传递server
作为参考。如果在第一个线程结束之前,serverSocket
将获得一个新连接并创建一个新套接字,该套接字将更改server
的值。这会影响第一个线程的执行,因为第一个线程将引用作为其参数,这意味着该引用的基础对象被更改了吗?
我测试了程序,它看起来运行良好。虽然它们的所有构造函数参数都是对同一个对象的引用,但每个线程并没有相互影响。这对我没有意义,并希望有人能够澄清。谢谢。
第二*拷贝*的* *相同创建参考的。 – EJP