多客户端连接服务器java
有一个关于多个客户端连接一台服务器的问题。这是我的服务器端代码:多客户端连接服务器java,java,multithreading,sockets,reference,Java,Multithreading,Sockets,Reference,有一个关于多个客户端连接一台服务器的问题。这是我的服务器端代码: //... ServerSocket serverSocket = null; try{ serverSocket = new ServerSocket(port); }catch(IOException e){ e.printStackTrace(); } Socket server = null;
//...
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
应该作为引用传递。如果在第一个线程结束之前,serverSocket
获取新连接并创建新套接字,这将更改server
的值。这是否会影响第一个线程的执行,因为第一个线程将引用作为其参数,这意味着该引用的底层对象已更改
我测试了这个程序,它似乎运行得很好。虽然每个线程的所有构造函数参数都是对同一对象的引用,但它们之间并没有相互影响。这对我来说没有意义,希望有人能澄清。谢谢 将服务器对象传递给
createdThread()
方法时,将创建对该对象的同一引用的第二个副本。请看“图1”。因此,当您在循环中更改服务器对象的值时,一个引用将丢失,但线程使用的方法中仍然存在第二个引用。当服务器对象被传递到createdThread()
方法时,将创建对它的同一引用的第二个副本。请看“图1”。因此,当您在循环中更改服务器对象的值时,一个引用丢失,但第二个引用仍然存在于线程使用的方法中
假设我有一个连接,线程启动,接受的套接字作为参数传递给线程
按价值计算。换句话说,通过复制
在这种情况下,如果我没有错的话,应该将服务器作为引用传递
作为对套接字的引用的值
如果在第一个线程结束之前,serversocket获得一个新连接并创建一个新套接字,这将更改server
的值
对
不,这将影响第一个线程的执行
没有
因为第一个线程将引用作为其参数
不,没有。它将引用的值作为其参数,并(大概)将其存储到另一个变量中。不是原始的服务器
变量
意味着该引用的基础对象已更改
没有
假设我有一个连接,线程启动,接受的套接字作为参数传递给线程
按价值计算。换句话说,通过复制
在这种情况下,如果我没有错的话,应该将服务器作为引用传递
作为对套接字的引用的值
如果在第一个线程结束之前,serversocket获得一个新连接并创建一个新套接字,这将更改server
的值
对
不,这将影响第一个线程的执行
没有
因为第一个线程将引用作为其参数
不,没有。它将引用的值作为其参数,并(大概)将其存储到另一个变量中。不是原始的服务器
变量
意味着该引用的基础对象已更改
否。将创建同一引用的第二个副本。将创建同一引用的第二个副本。