http://www.cnblogs.com/springcsc/archive/2009/12/03/1616413.htmlhtml
一個服務器端通常都須要同時爲多個客戶端提供通信,若是須要同時支持多個客戶端,則必須使用前面介紹的線程的概念。簡單來講,也就是當服務器端接收到一個鏈接時,啓動一個專門的線程處理和該客戶端的通信。java
1(無線程池)spring
import java.net.ServerSocket;服務器
import java.net.Socket;socket
public class MulThreadSocketServer {.net
public static void main(String[] args) {線程
ServerSocket serverSocket = null;server
Socket socket = null;htm
//監聽端口號blog
int port = 10000;
try {
//創建鏈接
serverSocket = new ServerSocket(port);
System.out.println("服務器已啓動:");
while(true){
//得到鏈接
socket = serverSocket.accept();
//啓動線程
new LogicThread(socket);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try{
//關閉鏈接
serverSocket.close();
}catch(Exception e){}
}
}
}
在該示例代碼中,實現了一個while形式的死循環,因爲accept方法是阻塞方法,因此當客戶端鏈接未到達時,將阻塞該程序的執行,當客戶端到達時接收該鏈接,並啓動一個新的LogicThread線程處理該鏈接,而後按照循環的執行流程,繼續等待下一個客戶端鏈接。這樣當任何一個客戶端鏈接到達時,都開啓一個專門的線程處理,經過多個線程支持多個客戶端同時處理。
下面再看一下LogicThread線程類的源代碼實現:(接下一篇)