對連接單個服務器的多個客戶端有疑問。這裏是我的服務器端代碼:多個客戶端連接服務器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