在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来读取来自客户端的数据,然后向客户端发送响应消息。
需要注意的是,在并发处理请求时,要确保线程安全,同时避免线程之间的资源竞争问题,例如使用同步块或锁等机制来确保共享资源的访问正确性和排他性。