在JAVA中,使用多線程進行網絡編程可以幫助我們實現并發處理和提高程序的效率。下面是一個簡單的示例代碼:
import java.io.IOException;
import java.NET.ServerSocket;
import java.net.Socket;
public class Server {
private static final int PORT = 8888;
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(PORT);
System.out.println("服務器已啟動...");
while (true) {
Socket socket = serverSocket.accept(); // 等待客戶端的連接
System.out.println("客戶端已連接:" + socket.getRemoteSocketAddress());
Thread thread = new Thread(new ServerHandler(socket)); // 創建一個線程處理該客戶端的請求
thread.start();
}
}
}
class ServerHandler implements Runnable {
private Socket socket;
public ServerHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
// 處理客戶端請求的代碼
// ...
}
}
在這個例子中,我們創建了一個ServerSocket對象來監聽指定端口上的連接請求。當有客戶端連接進來時,就會為每個客戶端啟動一個新的線程來處理它們所發起的請求。
在ServerHandler類中,我們需要將socket作為參數傳入,并實現Runnable接口來處理客戶端請求。在run方法中,我們可以使用socket來讀取來自客戶端的數據,然后向客戶端發送響應消息。
需要注意的是,在并發處理請求時,要確保線程安全,同時避免線程之間的資源競爭問題,例如使用同步塊或鎖等機制來確保共享資源的訪問正確性和排他性。