java 多线程处理http请求代码
时间: 2023-11-27 20:03:31 浏览: 93
以下是一个简单的 Java 多线程处理 HTTP 请求的示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class HttpServer {
public static void main(String[] args) {
try {
ServerSocket serverSocket = new ServerSocket(8080);
while (true) {
Socket socket = serverSocket.accept();
new Thread(new RequestHandler(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class RequestHandler implements Runnable {
private Socket socket;
public RequestHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line = reader.readLine();
while (line != null && !line.isEmpty()) {
System.out.println(line);
line = reader.readLine();
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
这个示例代码创建了一个简单的 HTTP 服务器,它在 8080 端口监听连接请求。当收到一个连接请求时,它会创建一个新的线程来处理该请求。该线程的功能是读取传入请求的所有数据并将其打印到控制台上。在这个示例中,我们只关心请求的第一行,它包含了 HTTP 请求的方法、路径和协议版本。其他行通常是请求头和请求体。
这个示例只是一个简单的演示,实际的 HTTP 服务器需要更多的代码来处理请求和响应。此外,它还需要处理并发请求,防止资源竞争和死锁等问题。
阅读全文